]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
debugfs: teach set_super_value how to set the s_encoding field
authorTheodore Ts'o <tytso@mit.edu>
Thu, 2 May 2019 17:19:01 +0000 (13:19 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Thu, 2 May 2019 17:19:01 +0000 (13:19 -0400)
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
debugfs/set_fields.c

index 31356fd0533590cb6433104c0c5ff925669bb838..5142554dfde6237e34e67074eb5018c17e250d11 100644 (file)
@@ -70,6 +70,7 @@ static errcode_t parse_int(struct field_set_info *info, char *field, char *arg);
 static errcode_t parse_string(struct field_set_info *info, char *field, char *arg);
 static errcode_t parse_uuid(struct field_set_info *info, char *field, char *arg);
 static errcode_t parse_hashalg(struct field_set_info *info, char *field, char *arg);
+static errcode_t parse_encoding(struct field_set_info *info, char *field, char *arg);
 static errcode_t parse_time(struct field_set_info *info, char *field, char *arg);
 static errcode_t parse_bmap(struct field_set_info *info, char *field, char *arg);
 static errcode_t parse_gd_csum(struct field_set_info *info, char *field, char *arg);
@@ -181,6 +182,7 @@ static struct field_set_info super_fields[] = {
        { "encrypt_pw_salt", &set_sb.s_encrypt_pw_salt, NULL, 16, parse_uuid },
        { "lpf_ino", &set_sb.s_lpf_ino, NULL, 4, parse_uint },
        { "checksum_seed", &set_sb.s_checksum_seed, NULL, 4, parse_uint },
+       { "encoding", &set_sb.s_encoding, NULL, 2, parse_encoding },
        { 0, 0, 0, 0 }
 };
 
@@ -631,6 +633,19 @@ static errcode_t parse_hashalg(struct field_set_info *info,
        return 0;
 }
 
+static errcode_t parse_encoding(struct field_set_info *info,
+                               char *field EXT2FS_ATTR((unused)), char *arg)
+{
+       int     encoding;
+       unsigned char   *p = (unsigned char *) info->ptr;
+
+       encoding = e2p_str2encoding(arg);
+       if (encoding < 0)
+               return parse_uint(info, field, arg);
+       *p = encoding;
+       return 0;
+}
+
 static errcode_t parse_bmap(struct field_set_info *info,
                            char *field EXT2FS_ATTR((unused)), char *arg)
 {