diff options
author | Bruno Haible <bruno@clisp.org> | 2009-12-12 12:22:07 +0100 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2009-12-12 16:13:42 +0100 |
commit | c4031b5252bc3c539b5c041c2e30fd7fb88382d9 (patch) | |
tree | aa1e352796505a4b7def4083ace1dedb94e96c98 /gettext-tools/src/format-sh.c | |
parent | 24d34031721a97d3e7b498ccbf8b5779d2acc93e (diff) | |
download | external_gettext-c4031b5252bc3c539b5c041c2e30fd7fb88382d9.zip external_gettext-c4031b5252bc3c539b5c041c2e30fd7fb88382d9.tar.gz external_gettext-c4031b5252bc3c539b5c041c2e30fd7fb88382d9.tar.bz2 |
Untabify.
Diffstat (limited to 'gettext-tools/src/format-sh.c')
-rw-r--r-- | gettext-tools/src/format-sh.c | 314 |
1 files changed, 157 insertions, 157 deletions
diff --git a/gettext-tools/src/format-sh.c b/gettext-tools/src/format-sh.c index 5a7494e..b796fcd 100644 --- a/gettext-tools/src/format-sh.c +++ b/gettext-tools/src/format-sh.c @@ -72,7 +72,7 @@ static int named_arg_compare (const void *p1, const void *p2) { return strcmp (((const struct named_arg *) p1)->name, - ((const struct named_arg *) p2)->name); + ((const struct named_arg *) p2)->name); } #define INVALID_NON_ASCII_VARIABLE() \ @@ -86,7 +86,7 @@ named_arg_compare (const void *p1, const void *p2) static void * format_parse (const char *format, bool translated, char *fdi, - char **invalid_reason) + char **invalid_reason) { const char *const format_start = format; struct spec spec; @@ -100,113 +100,113 @@ format_parse (const char *format, bool translated, char *fdi, for (; *format != '\0';) if (*format++ == '$') { - /* A variable substitution. */ - char *name; - - FDI_SET (format - 1, FMTDIR_START); - spec.directives++; - - if (*format == '{') - { - const char *name_start; - const char *name_end; - size_t n; - - name_start = ++format; - for (; *format != '\0'; format++) - { - if (*format == '}') - break; - if (!c_isascii (*format)) - { - *invalid_reason = INVALID_NON_ASCII_VARIABLE (); - FDI_SET (format, FMTDIR_ERROR); - goto bad_format; - } - if (format > name_start - && (*format == '-' || *format == '=' || *format == '+' - || *format == '?' || *format == ':')) - { - *invalid_reason = INVALID_SHELL_SYNTAX (); - FDI_SET (format, FMTDIR_ERROR); - goto bad_format; - } - if (!(c_isalnum (*format) || *format == '_') - || (format == name_start && c_isdigit (*format))) - { - *invalid_reason = INVALID_CONTEXT_DEPENDENT_VARIABLE (); - FDI_SET (format, FMTDIR_ERROR); - goto bad_format; - } - } - if (*format == '\0') - { - *invalid_reason = INVALID_UNTERMINATED_DIRECTIVE (); - FDI_SET (format - 1, FMTDIR_ERROR); - goto bad_format; - } - name_end = format++; - - n = name_end - name_start; - if (n == 0) - { - *invalid_reason = INVALID_EMPTY_VARIABLE (); - FDI_SET (format - 1, FMTDIR_ERROR); - goto bad_format; - } - name = XNMALLOC (n + 1, char); - memcpy (name, name_start, n); - name[n] = '\0'; - } - else if (c_isalpha (*format) || *format == '_') - { - const char *name_start; - const char *name_end; - size_t n; - - name_start = format; - do - format++; - while (*format != '\0' && (c_isalnum (*format) || *format == '_')); - name_end = format; - - n = name_end - name_start; - name = XNMALLOC (n + 1, char); - memcpy (name, name_start, n); - name[n] = '\0'; - } - else if (*format != '\0') - { - if (!c_isascii (*format)) - { - *invalid_reason = INVALID_NON_ASCII_VARIABLE (); - FDI_SET (format, FMTDIR_ERROR); - goto bad_format; - } - else - { - *invalid_reason = INVALID_CONTEXT_DEPENDENT_VARIABLE (); - FDI_SET (format, FMTDIR_ERROR); - goto bad_format; - } - } - else - { - *invalid_reason = INVALID_UNTERMINATED_DIRECTIVE (); - FDI_SET (format - 1, FMTDIR_ERROR); - goto bad_format; - } - - /* Named argument. */ - if (spec.allocated == spec.named_arg_count) - { - spec.allocated = 2 * spec.allocated + 1; - spec.named = (struct named_arg *) xrealloc (spec.named, spec.allocated * sizeof (struct named_arg)); - } - spec.named[spec.named_arg_count].name = name; - spec.named_arg_count++; - - FDI_SET (format - 1, FMTDIR_END); + /* A variable substitution. */ + char *name; + + FDI_SET (format - 1, FMTDIR_START); + spec.directives++; + + if (*format == '{') + { + const char *name_start; + const char *name_end; + size_t n; + + name_start = ++format; + for (; *format != '\0'; format++) + { + if (*format == '}') + break; + if (!c_isascii (*format)) + { + *invalid_reason = INVALID_NON_ASCII_VARIABLE (); + FDI_SET (format, FMTDIR_ERROR); + goto bad_format; + } + if (format > name_start + && (*format == '-' || *format == '=' || *format == '+' + || *format == '?' || *format == ':')) + { + *invalid_reason = INVALID_SHELL_SYNTAX (); + FDI_SET (format, FMTDIR_ERROR); + goto bad_format; + } + if (!(c_isalnum (*format) || *format == '_') + || (format == name_start && c_isdigit (*format))) + { + *invalid_reason = INVALID_CONTEXT_DEPENDENT_VARIABLE (); + FDI_SET (format, FMTDIR_ERROR); + goto bad_format; + } + } + if (*format == '\0') + { + *invalid_reason = INVALID_UNTERMINATED_DIRECTIVE (); + FDI_SET (format - 1, FMTDIR_ERROR); + goto bad_format; + } + name_end = format++; + + n = name_end - name_start; + if (n == 0) + { + *invalid_reason = INVALID_EMPTY_VARIABLE (); + FDI_SET (format - 1, FMTDIR_ERROR); + goto bad_format; + } + name = XNMALLOC (n + 1, char); + memcpy (name, name_start, n); + name[n] = '\0'; + } + else if (c_isalpha (*format) || *format == '_') + { + const char *name_start; + const char *name_end; + size_t n; + + name_start = format; + do + format++; + while (*format != '\0' && (c_isalnum (*format) || *format == '_')); + name_end = format; + + n = name_end - name_start; + name = XNMALLOC (n + 1, char); + memcpy (name, name_start, n); + name[n] = '\0'; + } + else if (*format != '\0') + { + if (!c_isascii (*format)) + { + *invalid_reason = INVALID_NON_ASCII_VARIABLE (); + FDI_SET (format, FMTDIR_ERROR); + goto bad_format; + } + else + { + *invalid_reason = INVALID_CONTEXT_DEPENDENT_VARIABLE (); + FDI_SET (format, FMTDIR_ERROR); + goto bad_format; + } + } + else + { + *invalid_reason = INVALID_UNTERMINATED_DIRECTIVE (); + FDI_SET (format - 1, FMTDIR_ERROR); + goto bad_format; + } + + /* Named argument. */ + if (spec.allocated == spec.named_arg_count) + { + spec.allocated = 2 * spec.allocated + 1; + spec.named = (struct named_arg *) xrealloc (spec.named, spec.allocated * sizeof (struct named_arg)); + } + spec.named[spec.named_arg_count].name = name; + spec.named_arg_count++; + + FDI_SET (format - 1, FMTDIR_END); } /* Sort the named argument array, and eliminate duplicates. */ @@ -215,18 +215,18 @@ format_parse (const char *format, bool translated, char *fdi, unsigned int i, j; qsort (spec.named, spec.named_arg_count, sizeof (struct named_arg), - named_arg_compare); + named_arg_compare); /* Remove duplicates: Copy from i to j, keeping 0 <= j <= i. */ for (i = j = 0; i < spec.named_arg_count; i++) - if (j > 0 && strcmp (spec.named[i].name, spec.named[j-1].name) == 0) - free (spec.named[i].name); - else - { - if (j < i) - spec.named[j].name = spec.named[i].name; - j++; - } + if (j > 0 && strcmp (spec.named[i].name, spec.named[j-1].name) == 0) + free (spec.named[i].name); + else + { + if (j < i) + spec.named[j].name = spec.named[i].name; + j++; + } spec.named_arg_count = j; } @@ -239,7 +239,7 @@ format_parse (const char *format, bool translated, char *fdi, { unsigned int i; for (i = 0; i < spec.named_arg_count; i++) - free (spec.named[i].name); + free (spec.named[i].name); free (spec.named); } return NULL; @@ -254,7 +254,7 @@ format_free (void *descr) { unsigned int i; for (i = 0; i < spec->named_arg_count; i++) - free (spec->named[i].name); + free (spec->named[i].name); free (spec->named); } free (spec); @@ -270,8 +270,8 @@ format_get_number_of_directives (void *descr) static bool format_check (void *msgid_descr, void *msgstr_descr, bool equality, - formatstring_error_logger_t error_logger, - const char *pretty_msgid, const char *pretty_msgstr) + formatstring_error_logger_t error_logger, + const char *pretty_msgid, const char *pretty_msgstr) { struct spec *spec1 = (struct spec *) msgid_descr; struct spec *spec2 = (struct spec *) msgstr_descr; @@ -284,38 +284,38 @@ format_check (void *msgid_descr, void *msgstr_descr, bool equality, unsigned int n2 = spec2->named_arg_count; /* Check the argument names are the same. - Both arrays are sorted. We search for the first difference. */ + Both arrays are sorted. We search for the first difference. */ for (i = 0, j = 0; i < n1 || j < n2; ) - { - int cmp = (i >= n1 ? 1 : - j >= n2 ? -1 : - strcmp (spec1->named[i].name, spec2->named[j].name)); - - if (cmp > 0) - { - if (error_logger) - error_logger (_("a format specification for argument '%s', as in '%s', doesn't exist in '%s'"), - spec2->named[j].name, pretty_msgstr, - pretty_msgid); - err = true; - break; - } - else if (cmp < 0) - { - if (equality) - { - if (error_logger) - error_logger (_("a format specification for argument '%s' doesn't exist in '%s'"), - spec1->named[i].name, pretty_msgstr); - err = true; - break; - } - else - i++; - } - else - j++, i++; - } + { + int cmp = (i >= n1 ? 1 : + j >= n2 ? -1 : + strcmp (spec1->named[i].name, spec2->named[j].name)); + + if (cmp > 0) + { + if (error_logger) + error_logger (_("a format specification for argument '%s', as in '%s', doesn't exist in '%s'"), + spec2->named[j].name, pretty_msgstr, + pretty_msgid); + err = true; + break; + } + else if (cmp < 0) + { + if (equality) + { + if (error_logger) + error_logger (_("a format specification for argument '%s' doesn't exist in '%s'"), + spec1->named[i].name, pretty_msgstr); + err = true; + break; + } + else + i++; + } + else + j++, i++; + } } return err; @@ -355,7 +355,7 @@ format_print (void *descr) for (i = 0; i < spec->named_arg_count; i++) { if (i > 0) - printf (", "); + printf (", "); printf ("'%s'", spec->named[i].name); } printf ("}"); @@ -374,9 +374,9 @@ main () line_len = getline (&line, &line_size, stdin); if (line_len < 0) - break; + break; if (line_len > 0 && line[line_len - 1] == '\n') - line[--line_len] = '\0'; + line[--line_len] = '\0'; invalid_reason = NULL; descr = format_parse (line, false, NULL, &invalid_reason); @@ -384,7 +384,7 @@ main () format_print (descr); printf ("\n"); if (descr == NULL) - printf ("%s\n", invalid_reason); + printf ("%s\n", invalid_reason); free (invalid_reason); free (line); |