[PATCH v2 03/15] nls: Wrap charset hooks in ops structure

From: Gabriel Krisman Bertazi
Date: Mon May 21 2018 - 12:41:53 EST


With the exception of the struct declaration, this patch was generated
by the following Coccinelle script:

<smpl>

@nlstable@
identifier p;
expression uni2char_fn;
expression char2uni_fn;

@@
static struct nls_table p = {
- .char2uni = char2uni_fn,
- .uni2char = uni2char_fn,
+ .ops = &charset_ops,
};

@createops@
identifier nlstable.p;
expression nlstable.uni2char_fn;
expression nlstable.char2uni_fn;
@@

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char_fn,
+ .char2uni = char2uni_fn,
+};
+
static struct nls_table p = {};

@@
struct nls_table *c;
@@
(
- c->uni2char
+ c->ops->uni2char
|
- c->char2uni
+ c->ops->char2uni
)

</smpl>

Signed-off-by: Gabriel Krisman Bertazi <krisman@xxxxxxxxxxxxxxx>
---
fs/nls/mac-celtic.c | 8 ++++++--
fs/nls/mac-centeuro.c | 8 ++++++--
fs/nls/mac-croatian.c | 8 ++++++--
fs/nls/mac-cyrillic.c | 8 ++++++--
fs/nls/mac-gaelic.c | 8 ++++++--
fs/nls/mac-greek.c | 8 ++++++--
fs/nls/mac-iceland.c | 8 ++++++--
fs/nls/mac-inuit.c | 8 ++++++--
fs/nls/mac-roman.c | 8 ++++++--
fs/nls/mac-romanian.c | 8 ++++++--
fs/nls/mac-turkish.c | 8 ++++++--
fs/nls/nls_ascii.c | 8 ++++++--
fs/nls/nls_base.c | 8 ++++++--
fs/nls/nls_cp1250.c | 8 ++++++--
fs/nls/nls_cp1251.c | 8 ++++++--
fs/nls/nls_cp1255.c | 8 ++++++--
fs/nls/nls_cp437.c | 8 ++++++--
fs/nls/nls_cp737.c | 8 ++++++--
fs/nls/nls_cp775.c | 8 ++++++--
fs/nls/nls_cp850.c | 8 ++++++--
fs/nls/nls_cp852.c | 8 ++++++--
fs/nls/nls_cp855.c | 8 ++++++--
fs/nls/nls_cp857.c | 8 ++++++--
fs/nls/nls_cp860.c | 8 ++++++--
fs/nls/nls_cp861.c | 8 ++++++--
fs/nls/nls_cp862.c | 8 ++++++--
fs/nls/nls_cp863.c | 8 ++++++--
fs/nls/nls_cp864.c | 8 ++++++--
fs/nls/nls_cp865.c | 8 ++++++--
fs/nls/nls_cp866.c | 8 ++++++--
fs/nls/nls_cp869.c | 8 ++++++--
fs/nls/nls_cp874.c | 8 ++++++--
fs/nls/nls_cp932.c | 8 ++++++--
fs/nls/nls_cp936.c | 8 ++++++--
fs/nls/nls_cp949.c | 8 ++++++--
fs/nls/nls_cp950.c | 8 ++++++--
fs/nls/nls_euc-jp.c | 8 ++++++--
fs/nls/nls_iso8859-1.c | 8 ++++++--
fs/nls/nls_iso8859-13.c | 8 ++++++--
fs/nls/nls_iso8859-14.c | 8 ++++++--
fs/nls/nls_iso8859-15.c | 8 ++++++--
fs/nls/nls_iso8859-2.c | 8 ++++++--
fs/nls/nls_iso8859-3.c | 8 ++++++--
fs/nls/nls_iso8859-4.c | 8 ++++++--
fs/nls/nls_iso8859-5.c | 8 ++++++--
fs/nls/nls_iso8859-6.c | 8 ++++++--
fs/nls/nls_iso8859-7.c | 8 ++++++--
fs/nls/nls_iso8859-9.c | 8 ++++++--
fs/nls/nls_koi8-r.c | 8 ++++++--
fs/nls/nls_koi8-ru.c | 8 ++++++--
fs/nls/nls_koi8-u.c | 8 ++++++--
fs/nls/nls_utf8.c | 8 ++++++--
fs/udf/unicode.c | 4 ++--
include/linux/nls.h | 16 ++++++++++------
54 files changed, 324 insertions(+), 112 deletions(-)

diff --git a/fs/nls/mac-celtic.c b/fs/nls/mac-celtic.c
index 266c2d7d50bd..1b59b04f26f2 100644
--- a/fs/nls/mac-celtic.c
+++ b/fs/nls/mac-celtic.c
@@ -577,10 +577,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "macceltic",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/mac-centeuro.c b/fs/nls/mac-centeuro.c
index 9789c6057551..d5b8f38f97b6 100644
--- a/fs/nls/mac-centeuro.c
+++ b/fs/nls/mac-centeuro.c
@@ -507,10 +507,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "maccenteuro",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/mac-croatian.c b/fs/nls/mac-croatian.c
index bb19e7a07d43..32de6accd526 100644
--- a/fs/nls/mac-croatian.c
+++ b/fs/nls/mac-croatian.c
@@ -577,10 +577,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "maccroatian",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/mac-cyrillic.c b/fs/nls/mac-cyrillic.c
index 2a7dea36acba..34d5c1c05ff1 100644
--- a/fs/nls/mac-cyrillic.c
+++ b/fs/nls/mac-cyrillic.c
@@ -472,10 +472,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "maccyrillic",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/mac-gaelic.c b/fs/nls/mac-gaelic.c
index 77b001653588..2aabf5213176 100644
--- a/fs/nls/mac-gaelic.c
+++ b/fs/nls/mac-gaelic.c
@@ -542,10 +542,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "macgaelic",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/mac-greek.c b/fs/nls/mac-greek.c
index 1eccf499e2eb..df62909ef57e 100644
--- a/fs/nls/mac-greek.c
+++ b/fs/nls/mac-greek.c
@@ -472,10 +472,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "macgreek",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/mac-iceland.c b/fs/nls/mac-iceland.c
index cbd0875c6d69..8daa68b995bc 100644
--- a/fs/nls/mac-iceland.c
+++ b/fs/nls/mac-iceland.c
@@ -577,10 +577,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "maciceland",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/mac-inuit.c b/fs/nls/mac-inuit.c
index fba8357aaf03..b0799693502a 100644
--- a/fs/nls/mac-inuit.c
+++ b/fs/nls/mac-inuit.c
@@ -507,10 +507,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "macinuit",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/mac-roman.c b/fs/nls/mac-roman.c
index b6a98a5208cd..ba358b864b05 100644
--- a/fs/nls/mac-roman.c
+++ b/fs/nls/mac-roman.c
@@ -612,10 +612,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "macroman",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/mac-romanian.c b/fs/nls/mac-romanian.c
index 25547f023638..7a8a7f9a0bbc 100644
--- a/fs/nls/mac-romanian.c
+++ b/fs/nls/mac-romanian.c
@@ -577,10 +577,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "macromanian",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/mac-turkish.c b/fs/nls/mac-turkish.c
index b5454bc7b7fa..eb3c5e53ec88 100644
--- a/fs/nls/mac-turkish.c
+++ b/fs/nls/mac-turkish.c
@@ -577,10 +577,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "macturkish",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_ascii.c b/fs/nls/nls_ascii.c
index a2620650d5e4..6bad3e779284 100644
--- a/fs/nls/nls_ascii.c
+++ b/fs/nls/nls_ascii.c
@@ -142,10 +142,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "ascii",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_base.c b/fs/nls/nls_base.c
index e5d083b6e2b2..0bb0acf6893f 100644
--- a/fs/nls/nls_base.c
+++ b/fs/nls/nls_base.c
@@ -520,10 +520,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table default_table = {
.charset = "default",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_cp1250.c b/fs/nls/nls_cp1250.c
index ace3e19d3407..08902e86fc8e 100644
--- a/fs/nls/nls_cp1250.c
+++ b/fs/nls/nls_cp1250.c
@@ -323,10 +323,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "cp1250",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_cp1251.c b/fs/nls/nls_cp1251.c
index 9273ddfd08a1..2bb88c8cc5bf 100644
--- a/fs/nls/nls_cp1251.c
+++ b/fs/nls/nls_cp1251.c
@@ -277,10 +277,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "cp1251",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_cp1255.c b/fs/nls/nls_cp1255.c
index 1caf5dfed85b..c6bf8d575c5b 100644
--- a/fs/nls/nls_cp1255.c
+++ b/fs/nls/nls_cp1255.c
@@ -358,11 +358,15 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "cp1255",
.alias = "iso8859-8",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_cp437.c b/fs/nls/nls_cp437.c
index 7ddb830da3fd..0f3f8bdbb62b 100644
--- a/fs/nls/nls_cp437.c
+++ b/fs/nls/nls_cp437.c
@@ -363,10 +363,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "cp437",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_cp737.c b/fs/nls/nls_cp737.c
index c593f683a0cd..9383359ca25f 100644
--- a/fs/nls/nls_cp737.c
+++ b/fs/nls/nls_cp737.c
@@ -326,10 +326,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "cp737",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_cp775.c b/fs/nls/nls_cp775.c
index 554c863745f2..6c787b9079ed 100644
--- a/fs/nls/nls_cp775.c
+++ b/fs/nls/nls_cp775.c
@@ -295,10 +295,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "cp775",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_cp850.c b/fs/nls/nls_cp850.c
index 56cccd14b40b..50a57138a571 100644
--- a/fs/nls/nls_cp850.c
+++ b/fs/nls/nls_cp850.c
@@ -291,10 +291,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "cp850",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_cp852.c b/fs/nls/nls_cp852.c
index 7cdc05ac1d40..0cbb199f1cd5 100644
--- a/fs/nls/nls_cp852.c
+++ b/fs/nls/nls_cp852.c
@@ -313,10 +313,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "cp852",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_cp855.c b/fs/nls/nls_cp855.c
index 7426eea05663..530b77c86363 100644
--- a/fs/nls/nls_cp855.c
+++ b/fs/nls/nls_cp855.c
@@ -275,10 +275,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "cp855",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_cp857.c b/fs/nls/nls_cp857.c
index 098309733ebd..0db642ec6f45 100644
--- a/fs/nls/nls_cp857.c
+++ b/fs/nls/nls_cp857.c
@@ -277,10 +277,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "cp857",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_cp860.c b/fs/nls/nls_cp860.c
index 84224478e731..44a40dac26bd 100644
--- a/fs/nls/nls_cp860.c
+++ b/fs/nls/nls_cp860.c
@@ -340,10 +340,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "cp860",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_cp861.c b/fs/nls/nls_cp861.c
index dc873e4be092..50e08174fc48 100644
--- a/fs/nls/nls_cp861.c
+++ b/fs/nls/nls_cp861.c
@@ -363,10 +363,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "cp861",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_cp862.c b/fs/nls/nls_cp862.c
index d5263e3c5566..3505f3437972 100644
--- a/fs/nls/nls_cp862.c
+++ b/fs/nls/nls_cp862.c
@@ -397,10 +397,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "cp862",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_cp863.c b/fs/nls/nls_cp863.c
index 051c9832e36a..e3489cdc0c04 100644
--- a/fs/nls/nls_cp863.c
+++ b/fs/nls/nls_cp863.c
@@ -357,10 +357,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "cp863",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_cp864.c b/fs/nls/nls_cp864.c
index 97eb1273b2f7..d4185bc7f1bf 100644
--- a/fs/nls/nls_cp864.c
+++ b/fs/nls/nls_cp864.c
@@ -383,10 +383,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "cp864",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_cp865.c b/fs/nls/nls_cp865.c
index 111214228525..9f468944e577 100644
--- a/fs/nls/nls_cp865.c
+++ b/fs/nls/nls_cp865.c
@@ -363,10 +363,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "cp865",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_cp866.c b/fs/nls/nls_cp866.c
index ffdcbc3fc38d..ee46fd5a76b1 100644
--- a/fs/nls/nls_cp866.c
+++ b/fs/nls/nls_cp866.c
@@ -281,10 +281,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "cp866",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_cp869.c b/fs/nls/nls_cp869.c
index 3b5a34589354..da29a4a53e1d 100644
--- a/fs/nls/nls_cp869.c
+++ b/fs/nls/nls_cp869.c
@@ -291,10 +291,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "cp869",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_cp874.c b/fs/nls/nls_cp874.c
index 8dfaa10710fa..642659b9ed89 100644
--- a/fs/nls/nls_cp874.c
+++ b/fs/nls/nls_cp874.c
@@ -249,11 +249,15 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "cp874",
.alias = "tis-620",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_cp932.c b/fs/nls/nls_cp932.c
index 67b7398e8483..3e7bdefdca90 100644
--- a/fs/nls/nls_cp932.c
+++ b/fs/nls/nls_cp932.c
@@ -7907,11 +7907,15 @@ static int char2uni(const unsigned char *rawstring, int boundlen,
return -EINVAL;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "cp932",
.alias = "sjis",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_cp936.c b/fs/nls/nls_cp936.c
index c96546cfec9f..b1fa2918992b 100644
--- a/fs/nls/nls_cp936.c
+++ b/fs/nls/nls_cp936.c
@@ -11085,11 +11085,15 @@ static int char2uni(const unsigned char *rawstring, int boundlen,
return n;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "cp936",
.alias = "gb2312",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_cp949.c b/fs/nls/nls_cp949.c
index 199171e97aa4..1d334095d86c 100644
--- a/fs/nls/nls_cp949.c
+++ b/fs/nls/nls_cp949.c
@@ -13920,11 +13920,15 @@ static int char2uni(const unsigned char *rawstring, int boundlen,
return n;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "cp949",
.alias = "euc-kr",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_cp950.c b/fs/nls/nls_cp950.c
index 8e1418708209..d936160a48f9 100644
--- a/fs/nls/nls_cp950.c
+++ b/fs/nls/nls_cp950.c
@@ -9456,11 +9456,15 @@ static int char2uni(const unsigned char *rawstring, int boundlen,
return n;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "cp950",
.alias = "big5",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_euc-jp.c b/fs/nls/nls_euc-jp.c
index eec257545f04..0af73982738b 100644
--- a/fs/nls/nls_euc-jp.c
+++ b/fs/nls/nls_euc-jp.c
@@ -549,10 +549,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen,
return euc_offset;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "euc-jp",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
};

static int __init init_nls_euc_jp(void)
diff --git a/fs/nls/nls_iso8859-1.c b/fs/nls/nls_iso8859-1.c
index 69ac020d43b1..6212b2925fa0 100644
--- a/fs/nls/nls_iso8859-1.c
+++ b/fs/nls/nls_iso8859-1.c
@@ -233,10 +233,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "iso8859-1",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_iso8859-13.c b/fs/nls/nls_iso8859-13.c
index afb3f8f275f0..8f0a23109207 100644
--- a/fs/nls/nls_iso8859-13.c
+++ b/fs/nls/nls_iso8859-13.c
@@ -261,10 +261,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "iso8859-13",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_iso8859-14.c b/fs/nls/nls_iso8859-14.c
index 046370f0b6f0..80ab77f37480 100644
--- a/fs/nls/nls_iso8859-14.c
+++ b/fs/nls/nls_iso8859-14.c
@@ -317,10 +317,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "iso8859-14",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_iso8859-15.c b/fs/nls/nls_iso8859-15.c
index 7e34a841a056..5c02f93e7b20 100644
--- a/fs/nls/nls_iso8859-15.c
+++ b/fs/nls/nls_iso8859-15.c
@@ -283,10 +283,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "iso8859-15",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_iso8859-2.c b/fs/nls/nls_iso8859-2.c
index 7dd571181741..97afc1233da1 100644
--- a/fs/nls/nls_iso8859-2.c
+++ b/fs/nls/nls_iso8859-2.c
@@ -284,10 +284,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "iso8859-2",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_iso8859-3.c b/fs/nls/nls_iso8859-3.c
index 740b75ec4493..f835fcec3aae 100644
--- a/fs/nls/nls_iso8859-3.c
+++ b/fs/nls/nls_iso8859-3.c
@@ -284,10 +284,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "iso8859-3",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_iso8859-4.c b/fs/nls/nls_iso8859-4.c
index 8826021e32f5..14acb68fb013 100644
--- a/fs/nls/nls_iso8859-4.c
+++ b/fs/nls/nls_iso8859-4.c
@@ -284,10 +284,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "iso8859-4",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_iso8859-5.c b/fs/nls/nls_iso8859-5.c
index 7c04057a1ad8..f559bbb25045 100644
--- a/fs/nls/nls_iso8859-5.c
+++ b/fs/nls/nls_iso8859-5.c
@@ -248,10 +248,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "iso8859-5",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_iso8859-6.c b/fs/nls/nls_iso8859-6.c
index d4a881400d74..e3d7e28363b8 100644
--- a/fs/nls/nls_iso8859-6.c
+++ b/fs/nls/nls_iso8859-6.c
@@ -239,10 +239,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "iso8859-6",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_iso8859-7.c b/fs/nls/nls_iso8859-7.c
index 37b75d825a75..49fd2b24e492 100644
--- a/fs/nls/nls_iso8859-7.c
+++ b/fs/nls/nls_iso8859-7.c
@@ -293,10 +293,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "iso8859-7",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_iso8859-9.c b/fs/nls/nls_iso8859-9.c
index 557b98250d37..876696f89626 100644
--- a/fs/nls/nls_iso8859-9.c
+++ b/fs/nls/nls_iso8859-9.c
@@ -248,10 +248,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "iso8859-9",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_koi8-r.c b/fs/nls/nls_koi8-r.c
index 811f232fccfb..6a85211402a8 100644
--- a/fs/nls/nls_koi8-r.c
+++ b/fs/nls/nls_koi8-r.c
@@ -299,10 +299,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "koi8-r",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_koi8-ru.c b/fs/nls/nls_koi8-ru.c
index 32781252110d..c4e382fd0f13 100644
--- a/fs/nls/nls_koi8-ru.c
+++ b/fs/nls/nls_koi8-ru.c
@@ -51,10 +51,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen,
return n;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "koi8-ru",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
};

static int __init init_nls_koi8_ru(void)
diff --git a/fs/nls/nls_koi8-u.c b/fs/nls/nls_koi8-u.c
index 7e029e4c188a..5f91e9cdb165 100644
--- a/fs/nls/nls_koi8-u.c
+++ b/fs/nls/nls_koi8-u.c
@@ -306,10 +306,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return 1;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "koi8-u",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = charset2lower,
.charset2upper = charset2upper,
};
diff --git a/fs/nls/nls_utf8.c b/fs/nls/nls_utf8.c
index afcfbc4a14db..6988fffd5cf6 100644
--- a/fs/nls/nls_utf8.c
+++ b/fs/nls/nls_utf8.c
@@ -40,10 +40,14 @@ static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
return n;
}

+static const struct nls_ops charset_ops = {
+ .uni2char = uni2char,
+ .char2uni = char2uni,
+};
+
static struct nls_table table = {
.charset = "utf8",
- .uni2char = uni2char,
- .char2uni = char2uni,
+ .ops = &charset_ops,
.charset2lower = identity, /* no conversion */
.charset2upper = identity,
};
diff --git a/fs/udf/unicode.c b/fs/udf/unicode.c
index f897e55f2cd0..b515bd50cb97 100644
--- a/fs/udf/unicode.c
+++ b/fs/udf/unicode.c
@@ -368,7 +368,7 @@ int udf_get_filename(struct super_block *sb, const uint8_t *sname, int slen,
if (UDF_QUERY_FLAG(sb, UDF_FLAG_UTF8)) {
conv_f = udf_uni2char_utf8;
} else if (UDF_QUERY_FLAG(sb, UDF_FLAG_NLS_MAP)) {
- conv_f = UDF_SB(sb)->s_nls_map->uni2char;
+ conv_f = UDF_SB(sb)->s_nls_map->ops->uni2char;
} else
BUG();

@@ -387,7 +387,7 @@ int udf_put_filename(struct super_block *sb, const uint8_t *sname, int slen,
if (UDF_QUERY_FLAG(sb, UDF_FLAG_UTF8)) {
conv_f = udf_char2uni_utf8;
} else if (UDF_QUERY_FLAG(sb, UDF_FLAG_NLS_MAP)) {
- conv_f = UDF_SB(sb)->s_nls_map->char2uni;
+ conv_f = UDF_SB(sb)->s_nls_map->ops->char2uni;
} else
BUG();

diff --git a/include/linux/nls.h b/include/linux/nls.h
index cacbcd7d63e6..5d63fe6aa55e 100644
--- a/include/linux/nls.h
+++ b/include/linux/nls.h
@@ -22,12 +22,16 @@ typedef u16 wchar_t;
/* Arbitrary Unicode character */
typedef u32 unicode_t;

-struct nls_table {
- const char *charset;
- const char *alias;
+struct nls_ops {
int (*uni2char) (wchar_t uni, unsigned char *out, int boundlen);
int (*char2uni) (const unsigned char *rawstring, int boundlen,
wchar_t *uni);
+};
+
+struct nls_table {
+ const char *charset;
+ const char *alias;
+ const struct nls_ops *ops;
const unsigned char *charset2lower;
const unsigned char *charset2upper;
struct module *owner;
@@ -62,14 +66,14 @@ extern int utf16s_to_utf8s(const wchar_t *pwcs, int len,
static inline int nls_uni2char(const struct nls_table *table, wchar_t uni,
unsigned char *out, int boundlen)
{
- return table->uni2char(uni, out, boundlen);
+ return table->ops->uni2char(uni, out, boundlen);
}

static inline int nls_char2uni(const struct nls_table *table,
const unsigned char *rawstring,
int boundlen, wchar_t *uni)
{
- return table->char2uni(rawstring, boundlen, uni);
+ return table->ops->char2uni(rawstring, boundlen, uni);
}

static inline const char *nls_charset_name(const struct nls_table *table)
@@ -116,7 +120,7 @@ nls_nullsize(const struct nls_table *codepage)
int charlen;
char tmp[NLS_MAX_CHARSET_SIZE];

- charlen = codepage->uni2char(0, tmp, NLS_MAX_CHARSET_SIZE);
+ charlen = codepage->ops->uni2char(0, tmp, NLS_MAX_CHARSET_SIZE);

return charlen > 0 ? charlen : 1;
}
--
2.17.0