чување b4dd32975d80b47d0605bc6ef1fef90c44c0c86b
родитељ be4633e3e20bb1ef42448ff9d2356782d45c3276
Аутор: Страхиња Радић <contact@strahinja.org>
Датум: Sat, 3 Jul 2021 21:15:45 +0200
Reading #, and #: comments
Signed-off-by: Страхиња Радић <contact@strahinja.org>
Diffstat:
| M | TODO | | | 15 | +++++++++------ |
| M | draw.c | | | 14 | +++++++------- |
| M | po.c | | | 143 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------- |
| M | po.h | | | 13 | +++++++++---- |
| M | test/sr.po | | | 228 | +++++++++++++++++++++++++++++-------------------------------------------------- |
| M | util.c | | | 4 | ++-- |
измењених датотека: 6, додавања: 236(+), брисања: 181(-)
diff --git a/TODO b/TODO
@@ -4,9 +4,9 @@
[x] Line editing with cursor
[ ] Previous/next word?
- [~] .po file load
- [ ] Reading #, comments
- [ ] Reading #: comments
+ [x] .po file load
+ [x] Reading #, comments
+ [x] Reading #: comments
[ ] .po file save
[ ] Edit first msgid's msgstr
@@ -16,10 +16,13 @@
[ ] Multiline msgid display
[ ] Also msgid_plural
[ ] Also Plural-Forms
- [ ] Edit dialog overhaul? Don't display as dialog, but
- full-screen so more information can be shown
+ [ ] (Multiline) comment display; ~key binding: "?"~
+ [ ] Toggle msgid/msgstr focus with F6; when msgid is focused,
+ arrow keys scroll the msgid area
+ [/] ~Edit dialog overhaul? Don't display as dialog, but
+ full-screen so more information can be shown~
- [ ] (Multiline) comment display; key binding: "?"
+ [ ] Sort by flag/column?
[ ] Text selection?
diff --git a/draw.c b/draw.c
@@ -14,15 +14,15 @@ static const char* help_title = "poe - .po File Editor";
static const char* help[] = {
"Esc - Close dialog, clear error",
"Enter - Edit entry",
- "H or F1 - Show this screen",
- "g or Home - Go to first entry",
+ "H or F1 - Show this screen",
+ "g or Home - Go to first entry",
"C-B or PgUp - Go to previous page",
- "k or \u2191 - Go to previous entry",
- "j or \u2193 - Go to next entry",
+ "k or \u2191 - Go to previous entry",
+ "j or \u2193 - Go to next entry",
"C-F or PgDn - Go to next page",
- "G or End - Go to last entry",
- "f or C-Z - Toggle fuzzy flag",
- "q or C-Q - Quit"
+ "G or End - Go to last entry",
+ "f or C-Z - Toggle fuzzy flag",
+ "q or C-Q - Quit"
};
static const char* editbox_title = "Edit translation";
const char* errors[] = {
diff --git a/po.c b/po.c
@@ -4,6 +4,8 @@
#include "po.h"
#include "util.h"
+extern const char* flag_strings[];
+
char*
format_flags(char* buffer, const size_t max, const struct PoEntry* entry)
{
@@ -17,14 +19,16 @@ format_flags(char* buffer, const size_t max, const struct PoEntry* entry)
void
init_po_entry(struct PoEntry* entry)
{
- entry->flags = FL_NONE;
- entry->msgid = NULL;
- entry->msgid_plural = NULL;
- entry->nplural = 0;
- entry->msgstr = NULL;
- entry->msgstr_count = 0;
- entry->comments = NULL;
- entry->comment_lines = 0;
+ entry->flags = FL_NONE;
+ entry->msgid = NULL;
+ entry->msgid_plural = NULL;
+ entry->nplural = 0;
+ entry->msgstr = NULL;
+ entry->msgstr_count = 0;
+ entry->comments = NULL;
+ entry->comment_lines = 0;
+ entry->ref_comments = NULL;
+ entry->ref_comment_lines = 0;
}
void
@@ -49,6 +53,14 @@ free_po_entry(struct PoEntry* entry)
free(*comment++);
free(entry->comments);
}
+
+ if (entry->ref_comments)
+ {
+ char** comment = entry->ref_comments;
+ while (comment < entry->ref_comments + entry->ref_comment_lines)
+ free(*comment++);
+ free(entry->ref_comments);
+ }
}
struct PoEntry*
@@ -143,12 +155,10 @@ u32_add_comment(struct PoEntry* entry, const uint32_t* comment)
entry->comment_lines++;
if (!entry->comments)
- comments = calloc(entry->comment_lines,
- sizeof(uint32_t*));
+ comments = calloc(entry->comment_lines, sizeof(uint32_t*));
else
comments = realloc(entry->comments,
- entry->comment_lines *
- sizeof(uint32_t*));
+ entry->comment_lines * sizeof(uint32_t*));
if (!comments)
return NULL;
entry->comments = comments;
@@ -157,7 +167,35 @@ u32_add_comment(struct PoEntry* entry, const uint32_t* comment)
if (!new_line)
return NULL;
entry->comments[entry->comment_lines-1] = new_line;
- u32_strncpy(new_line, comment, MAXBUFLINE);
+ u32_strncpy(new_line, comment, MAXCOMMENTLINE);
+ return entry;
+}
+
+struct PoEntry*
+add_ref_comment(struct PoEntry* entry, const char* comment)
+{
+ char** ref_comments = NULL;
+ char* new_line = NULL;
+
+ if (!entry)
+ return NULL;
+
+ entry->ref_comment_lines++;
+
+ if (!entry->ref_comments)
+ ref_comments = calloc(entry->ref_comment_lines, sizeof(char*));
+ else
+ ref_comments = realloc(entry->ref_comments,
+ entry->ref_comment_lines * sizeof(char*));
+ if (!ref_comments)
+ return NULL;
+ entry->ref_comments = ref_comments;
+
+ new_line = calloc(MAXCOMMENTLINE, 1);
+ if (!new_line)
+ return NULL;
+ entry->ref_comments[entry->ref_comment_lines-1] = new_line;
+ strncpy(new_line, comment, MAXCOMMENTLINE);
return entry;
}
@@ -329,6 +367,13 @@ parse_po_line(const char* line, struct PoEntry** entries, size_t* entries_size,
*state |= PS_COMMENT_DESC;
pline++;
(*col)++;
+ if (*pline == ' ')
+ {
+ pline++;
+ (*col)++;
+ }
+ else if (*pline)
+ return PARSE_ERR_SYNTAX;
}
else
{
@@ -336,6 +381,42 @@ parse_po_line(const char* line, struct PoEntry** entries, size_t* entries_size,
(*col)++;
}
break;
+ case ',':
+ if (*col == 2 && *state & PS_COMMENT)
+ {
+ *state &= ~PS_COMMENT;
+ *state |= PS_COMMENT_FLAG;
+ pline++;
+ (*col)++;
+ if (*pline == ' ')
+ {
+ pline++;
+ (*col)++;
+ }
+ else if (*pline)
+ return PARSE_ERR_SYNTAX;
+ }
+ else
+ {
+ *ptoken++ = *pline++;
+ (*col)++;
+ }
+ break;
+ case ':':
+ if (*col == 2 && *state & PS_COMMENT)
+ {
+ *state &= ~PS_COMMENT;
+ *state |= PS_COMMENT_REF;
+ pline++;
+ (*col)++;
+ if (*pline == ' ')
+ {
+ pline++;
+ (*col)++;
+ }
+ else if (*pline)
+ return PARSE_ERR_SYNTAX;
+ }
case '"':
/* skip beginning and end quote */
if (ptoken == token || *(pline+1) == 0)
@@ -389,12 +470,40 @@ parse_po_line(const char* line, struct PoEntry** entries, size_t* entries_size,
u8_string_to_unicode(u32_token, token);
u32_add_comment(*current_entry, u32_token);
}
+ else if (*state & PS_COMMENT_FLAG)
+ {
+ ptoken = token;
+ while (*ptoken)
+ {
+ if (starts_with(ptoken, flag_strings[
+ FL_C_FORMAT]))
+ {
+ (*current_entry)->flags |= FL_C_FORMAT;
+ ptoken += strlen(flag_strings[
+ FL_C_FORMAT]);
+ }
+ else if (starts_with(ptoken, flag_strings[
+ FL_FUZZY]))
+ {
+ (*current_entry)->flags |= FL_FUZZY;
+ ptoken += strlen(flag_strings[
+ FL_FUZZY]);
+ }
+ else if (starts_with(ptoken, ", "))
+ ptoken += 2;
+ else
+ return PARSE_ERR_SYNTAX;
+ }
+
+ }
+ else if (*state & PS_COMMENT_REF)
+ add_ref_comment(*current_entry, token);
*token = 0;
}
- if (*state & PS_COMMENT)
- *state &= ~PS_COMMENT;
- if (*state & PS_COMMENT_DESC)
- *state &= ~PS_COMMENT_DESC;
+
+ /* one-line states */
+ *state &= ~(PS_COMMENT | PS_COMMENT_DESC | PS_COMMENT_FLAG |
+ PS_COMMENT_REF);
return PARSE_ERR_NONE;
}
diff --git a/po.h b/po.h
@@ -36,10 +36,12 @@ typedef enum {
PS_NONE = 0,
PS_COMMENT = 1,
PS_COMMENT_DESC = 1 << 1,
- PS_MSGID = 1 << 2,
- PS_MSGID_PLURAL = 1 << 3,
- PS_MSGSTR = 1 << 4,
- PS_MSGSTR_ARRAY = 1 << 5
+ PS_COMMENT_FLAG = 1 << 2,
+ PS_COMMENT_REF = 1 << 3,
+ PS_MSGID = 1 << 4,
+ PS_MSGID_PLURAL = 1 << 5,
+ PS_MSGSTR = 1 << 6,
+ PS_MSGSTR_ARRAY = 1 << 7
} ParseState;
typedef enum {
@@ -57,6 +59,8 @@ struct PoEntry {
int msgstr_count;
uint32_t** comments;
size_t comment_lines;
+ char** ref_comments;
+ size_t ref_comment_lines;
};
char* format_flags(char* buffer, const size_t max, const struct PoEntry* entry);
@@ -72,6 +76,7 @@ struct PoEntry* u32_set_msgid(struct PoEntry* entry, const uint32_t* msgid,
struct PoEntry* u32_set_msgstr(struct PoEntry* entry, const uint32_t* msgstr,
int msgstr_index, int append);
struct PoEntry* u32_add_comment(struct PoEntry* entry, const uint32_t* comment);
+struct PoEntry* add_ref_comment(struct PoEntry* entry, const char* comment);
int load_file(struct PoEntry** entries, size_t* entries_size,
size_t* entries_count, const char* filename, long* lineno,
long* col);
diff --git a/test/sr.po b/test/sr.po
@@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: neomutt 20210205\n"
"Report-Msgid-Bugs-To: neomutt-devel@neomutt.org\n"
"POT-Creation-Date: 2021-06-19 23:57+0100\n"
-"PO-Revision-Date: 2021-05-09 12:32+0200\n"
+"PO-Revision-Date: 2021-06-21 08:12+0200\n"
"Last-Translator: Страхиња Радић <contact@strahinja.org>\n"
"Language-Team: Serbian <sr@li.org>\n"
"Language: sr\n"
@@ -18,7 +18,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Poedit 2.4.1\n"
+"X-Generator: Poedit 3.0\n"
#. L10N: prompt to add a new alias
#: alias/alias.c:397
@@ -37,8 +37,7 @@ msgstr "Упозорење: Овај назив алијаса можда нећ
msgid "Address: "
msgstr "Адреса: "
-#: alias/alias.c:451 commands.c:478 compose/compose.c:491 conn/raw.c:151
-#: conn/raw.c:208 recvcmd.c:228 send/send.c:207
+#: alias/alias.c:451 commands.c:478 compose/compose.c:491 conn/raw.c:151 conn/raw.c:208 recvcmd.c:228 send/send.c:207
#, c-format
msgid "Bad IDN: '%s'"
msgstr "Лош IDN: „%s“"
@@ -55,8 +54,7 @@ msgstr "Коментар: "
msgid "Accept?"
msgstr "Прихватити?"
-#: alias/alias.c:500 recvattach.c:624 recvattach.c:647 recvattach.c:662
-#: recvattach.c:678 recvattach.c:782
+#: alias/alias.c:500 recvattach.c:624 recvattach.c:647 recvattach.c:662 recvattach.c:678 recvattach.c:782
msgid "Save to file: "
msgstr "Чување у датотеку: "
@@ -90,21 +88,17 @@ msgstr "Упозорење: Лоша адреса „%s“ у алијасу „
msgid "Warning: Bad IDN '%s' in alias '%s'"
msgstr "Упозорење: Лош IDN ‘%s’ у алијасу ‘%s’"
-#: alias/dlgalias.c:55 alias/dlgquery.c:61 autocrypt/dlgautocrypt.c:60
-#: browser.c:72 browser.c:85 conn/dlgverifycert.c:43 history/dlghistory.c:44
-#: ncrypt/dlggpgme.c:64 ncrypt/dlgpgp.c:59 ncrypt/dlgsmime.c:46
-#: pager/dlg_pager.c:178 pager/dlg_pager.c:189 pager/dlg_pager.c:199
+#: alias/dlgalias.c:55 alias/dlgquery.c:61 autocrypt/dlgautocrypt.c:60 browser.c:72 browser.c:85 conn/dlgverifycert.c:43 history/dlghistory.c:44
+#: ncrypt/dlggpgme.c:64 ncrypt/dlgpgp.c:59 ncrypt/dlgsmime.c:46 pager/dlg_pager.c:178 pager/dlg_pager.c:189 pager/dlg_pager.c:199
#: pager/dlg_pager.c:215 pattern/dlgpattern.c:60 postpone.c:66 recvattach.c:72
msgid "Exit"
msgstr "Излаз"
-#: alias/dlgalias.c:56 index/dlg_index.c:112 index/dlg_index.c:128
-#: pager/dlg_pager.c:203 pager/dlg_pager.c:220 postpone.c:67
+#: alias/dlgalias.c:56 index/dlg_index.c:112 index/dlg_index.c:128 pager/dlg_pager.c:203 pager/dlg_pager.c:220 postpone.c:67
msgid "Del"
msgstr "Бриши"
-#: alias/dlgalias.c:57 index/dlg_index.c:113 index/dlg_index.c:129
-#: postpone.c:68
+#: alias/dlgalias.c:57 index/dlg_index.c:113 index/dlg_index.c:129 postpone.c:68
msgid "Undel"
msgstr "Од-обриши"
@@ -116,17 +110,13 @@ msgstr "Сорт"
msgid "Rev-Sort"
msgstr "Обр-сорт"
-#: alias/dlgalias.c:60 history/dlghistory.c:45 ncrypt/dlggpgme.c:65
-#: ncrypt/dlgpgp.c:60 ncrypt/dlgsmime.c:47 pattern/dlgpattern.c:61
+#: alias/dlgalias.c:60 history/dlghistory.c:45 ncrypt/dlggpgme.c:65 ncrypt/dlgpgp.c:60 ncrypt/dlgsmime.c:47 pattern/dlgpattern.c:61
msgid "Select"
msgstr "Избор"
-#: alias/dlgalias.c:61 alias/dlgquery.c:68 autocrypt/dlgautocrypt.c:79
-#: browser.c:76 browser.c:91 compose/compose.c:154 compose/compose.c:169
-#: conn/dlgverifycert.c:44 history/dlghistory.c:47 index/dlg_index.c:118
-#: index/dlg_index.c:134 ncrypt/dlggpgme.c:67 ncrypt/dlgpgp.c:62
-#: ncrypt/dlgsmime.c:48 pager/dlg_pager.c:181 pager/dlg_pager.c:206
-#: pager/dlg_pager.c:222 pattern/dlgpattern.c:62 postpone.c:69 recvattach.c:76
+#: alias/dlgalias.c:61 alias/dlgquery.c:68 autocrypt/dlgautocrypt.c:79 browser.c:76 browser.c:91 compose/compose.c:154 compose/compose.c:169
+#: conn/dlgverifycert.c:44 history/dlghistory.c:47 index/dlg_index.c:118 index/dlg_index.c:134 ncrypt/dlggpgme.c:67 ncrypt/dlgpgp.c:62
+#: ncrypt/dlgsmime.c:48 pager/dlg_pager.c:181 pager/dlg_pager.c:206 pager/dlg_pager.c:222 pattern/dlgpattern.c:62 postpone.c:69 recvattach.c:76
msgid "Help"
msgstr "Помоћ"
@@ -177,8 +167,7 @@ msgstr "Search"
msgid "Waiting for response..."
msgstr "Чекање на одговор..."
-#: alias/dlgquery.c:354 alias/dlgquery.c:396 alias/dlgquery.c:413
-#: alias/dlgquery.c:701
+#: alias/dlgquery.c:354 alias/dlgquery.c:396 alias/dlgquery.c:413 alias/dlgquery.c:701
msgid "Query: "
msgstr "Упит: "
@@ -226,8 +215,7 @@ msgstr "%s не постоји. Да га креирам?"
#. L10N: mkdir() on the directory %s failed. The second %s is the
#. error message returned by libc
-#: autocrypt/autocrypt.c:82 bcache/bcache.c:228 hcache/hcache.c:233 main.c:821
-#: nntp/newsrc.c:1104
+#: autocrypt/autocrypt.c:82 bcache/bcache.c:228 hcache/hcache.c:233 main.c:821 nntp/newsrc.c:1104
#, c-format
msgid "Can't create %s: %s"
msgstr "Не могу да креирам %s: %s"
@@ -283,8 +271,7 @@ msgstr "Неуспешно креирање налога за аутошифро
#. L10N: Error displayed if the user tries to force sending an Autocrypt
#. email when the engine is not available.
-#: autocrypt/autocrypt.c:594 autocrypt/autocrypt.c:603
-#: autocrypt/autocrypt.c:610
+#: autocrypt/autocrypt.c:594 autocrypt/autocrypt.c:603 autocrypt/autocrypt.c:610
msgid "Autocrypt is not available"
msgstr "Аутошифровање није доступно"
@@ -662,22 +649,19 @@ msgstr "source: читање прекинуто због превише греш
#, c-format
msgid "source: %d warning in %s"
msgid_plural "source: %d warnings in %s"
-msgstr[0] "source: %d грешка у %s"
-msgstr[1] "source: %d грешке у %s"
-msgstr[2] "source: %d грешака у %s"
-
-#: command_parse.c:298 command_parse.c:320 command_parse.c:465
-#: command_parse.c:1053 command_parse.c:1137 gui/color.c:736 gui/color.c:899
-#: gui/color.c:1106 gui/color.c:1135 gui/color.c:1159 gui/color.c:1226
-#: gui/color.c:1249 hook.c:112 hook.c:121 hook.c:135 hook.c:390 hook.c:406
+msgstr[0] "source: %d упозорење у %s"
+msgstr[1] "source: %d упозорења у %s"
+msgstr[2] "source: %d упозорења у %s"
+
+#: command_parse.c:298 command_parse.c:320 command_parse.c:465 command_parse.c:1053 command_parse.c:1137 gui/color.c:736 gui/color.c:899
+#: gui/color.c:1106 gui/color.c:1135 gui/color.c:1159 gui/color.c:1226 gui/color.c:1249 hook.c:112 hook.c:121 hook.c:135 hook.c:390 hook.c:406
#: keymap.c:1277 score.c:96 subjectrx.c:73 subjectrx.c:101 subjectrx.c:109
#, c-format
msgid "%s: too few arguments"
msgstr "%s: премало аргумената"
-#: command_parse.c:344 command_parse.c:1327 command_parse.c:1657
-#: gui/color.c:1258 gui/color.c:1364 hook.c:142 hook.c:413 keymap.c:1209
-#: keymap.c:1382 keymap.c:1543 keymap.c:1624 mutt_lua.c:498 score.c:104
+#: command_parse.c:344 command_parse.c:1327 command_parse.c:1657 gui/color.c:1258 gui/color.c:1364 hook.c:142 hook.c:413 keymap.c:1209 keymap.c:1382
+#: keymap.c:1543 keymap.c:1624 mutt_lua.c:498 score.c:104
#, c-format
msgid "%s: too many arguments"
msgstr "%s: превише аргумената"
@@ -730,9 +714,8 @@ msgid "Can't set a variable with the '%s' command"
msgstr "Не може се поставити променљива наредбом „%s“"
#: command_parse.c:795
-#, fuzzy
msgid "Can't decrement a my_ variable"
-msgstr "Не може се користити префикс при постављању променљиве"
+msgstr "Не може се умањити my_ променљива"
#: command_parse.c:809
msgid "Can't use prefix when setting a variable"
@@ -834,10 +817,8 @@ msgstr "PGP потпис успешно верификован"
msgid "PGP signature could NOT be verified"
msgstr "PGP потпис није било могуће верификовати"
-#: commands.c:404 compmbox/compress.c:338 compose/compose.c:1877
-#: gui/curs_lib.c:389 index/dlg_index.c:1266 index/dlg_index.c:1319
-#: mutt_attach.c:162 mutt_attach.c:296 pager/dlg_pager.c:2662
-#: pager/do_pager.c:136 send/sendlib.c:1062
+#: commands.c:404 compmbox/compress.c:338 compose/compose.c:1877 gui/curs_lib.c:389 index/dlg_index.c:1266 index/dlg_index.c:1319 mutt_attach.c:162
+#: mutt_attach.c:296 pager/dlg_pager.c:2662 pager/do_pager.c:136 send/sendlib.c:1062
#, c-format
msgid "Error running \"%s\""
msgstr "Грешка приликом покретања „%s“"
@@ -1050,8 +1031,7 @@ msgstr "Скуп знакова промењен у %s; конвертоваће
msgid "Can't append without an append-hook or close-hook : %s"
msgstr "Не може се дописати на крај без append-hook или close-hook: %s"
-#: compmbox/compress.c:454 compmbox/compress.c:518 compmbox/compress.c:594
-#: compmbox/compress.c:632 mbox/mbox.c:1188
+#: compmbox/compress.c:454 compmbox/compress.c:518 compmbox/compress.c:594 compmbox/compress.c:632 mbox/mbox.c:1188
msgid "Unable to lock mailbox"
msgstr "Не може се закључати сандуче"
@@ -1062,7 +1042,7 @@ msgstr "Декомпресија %s"
#: compmbox/compress.c:467
msgid "Can't identify the contents of the compressed file"
-msgstr "Не може се идентификовати садежај компресоване датотеке"
+msgstr "Не може се идентификовати садржај компресоване датотеке"
#: compmbox/compress.c:474 compmbox/compress.c:548
#, c-format
@@ -1147,8 +1127,7 @@ msgstr "Безбедност: "
#. other compose menu fields. However, if possible, it should not be longer
#. than the other compose menu fields. Since it shares the row with "Encrypt
#. with:", it should not be longer than 15-20 character cells.
-#: compose/compose.c:125 ncrypt/crypt_gpgme.c:4277 ncrypt/pgp.c:1995
-#: ncrypt/smime.c:2220
+#: compose/compose.c:125 ncrypt/crypt_gpgme.c:4277 ncrypt/pgp.c:1995 ncrypt/smime.c:2220
msgid "Sign as: "
msgstr "Потписати као: "
@@ -1358,8 +1337,7 @@ msgid "Rename to: "
msgstr "Преименовати у: "
#. L10N: "stat" is a system call. Do "man 2 stat" for more information.
-#: compose/compose.c:1683 editmsg.c:99 editmsg.c:133 editmsg.c:152
-#: notmuch/db.c:96 send/sendlib.c:485
+#: compose/compose.c:1683 editmsg.c:99 editmsg.c:133 editmsg.c:152 notmuch/db.c:96 send/sendlib.c:485
#, c-format
msgid "Can't stat %s: %s"
msgstr "Не може се stat-овати %s: %s"
@@ -1527,8 +1505,7 @@ msgstr "Неисправна boolean вредност: %ld"
msgid "'charset' must contain exactly one character set name"
msgstr "„charset“ мора садржати тачно један назив скупа знакова"
-#: config/charset.c:66 hcache/config.c:53 hcache/config.c:72 hcache/config.c:94
-#: mutt_config.c:126
+#: config/charset.c:66 hcache/config.c:53 hcache/config.c:72 hcache/config.c:94 mutt_config.c:126
#, c-format
msgid "Invalid value for option %s: %s"
msgstr "Неисправна вредност опције %s: %s"
@@ -1543,8 +1520,7 @@ msgstr "Неисправна enum вредност: %s"
msgid "Invalid enum value: %ld"
msgstr "Неисправна enum вредност: %ld"
-#: config/long.c:47 config/number.c:48 config/path.c:93 config/path.c:166
-#: config/sort.c:54 config/string.c:65 config/string.c:139
+#: config/long.c:47 config/number.c:48 config/path.c:93 config/path.c:166 config/sort.c:54 config/string.c:65 config/string.c:139
#, c-format
msgid "Option %s may not be empty"
msgstr "Опција %s не може бити празна"
@@ -1554,8 +1530,7 @@ msgstr "Опција %s не може бити празна"
msgid "Invalid long: %s"
msgstr "Неисправан long: %s"
-#: config/long.c:60 config/long.c:112 config/long.c:157 config/long.c:193
-#: config/number.c:67 config/number.c:126 config/number.c:177
+#: config/long.c:60 config/long.c:112 config/long.c:157 config/long.c:193 config/number.c:67 config/number.c:126 config/number.c:177
#: config/number.c:216
#, c-format
msgid "Option %s may not be negative"
@@ -1596,8 +1571,7 @@ msgstr "Непостојећа променљива: %s"
msgid "Variable '%s' has an invalid type %d"
msgstr "Променљива „%s“ има неисправан тип %d"
-#: config/set.c:401 config/set.c:467 config/set.c:528 config/set.c:604
-#: config/set.c:670 config/set.c:746 config/set.c:926 config/set.c:1009
+#: config/set.c:401 config/set.c:467 config/set.c:528 config/set.c:604 config/set.c:670 config/set.c:746 config/set.c:926 config/set.c:1009
#, c-format
msgid "Unknown variable '%s'"
msgstr "Непозната променљива „%s“"
@@ -2008,9 +1982,8 @@ msgstr "Не може се дописати у фолдер: %s"
msgid "multipart message has no boundary parameter"
msgstr "порука са више делова нема параметар границе"
-#: flags.c:383 index/dlg_index.c:2722 index/dlg_index.c:2767
-#: index/dlg_index.c:3343 index/dlg_index.c:3384 mutt_thread.c:1143
-#: mutt_thread.c:1210 mutt_thread.c:1296
+#: flags.c:383 index/dlg_index.c:2722 index/dlg_index.c:2767 index/dlg_index.c:3343 index/dlg_index.c:3384 mutt_thread.c:1143 mutt_thread.c:1210
+#: mutt_thread.c:1296
msgid "Threading is not enabled"
msgstr "Нити нису омогућене"
@@ -2120,8 +2093,7 @@ msgstr "[-- Аутопреглед преко %s --]\n"
msgid "Invoking autoview command: %s"
msgstr "Покретање наредбе за аутопреглед: %s"
-#: handler.c:585 mutt_attach.c:546 mutt_attach.c:748 mutt_attach.c:1162
-#: mutt_attach.c:1230 ncrypt/dlgpgp.c:617 ncrypt/pgpkey.c:278
+#: handler.c:585 mutt_attach.c:546 mutt_attach.c:748 mutt_attach.c:1162 mutt_attach.c:1230 ncrypt/dlgpgp.c:617 ncrypt/pgpkey.c:278
msgid "Can't create filter"
msgstr "Не може се креирати филтер"
@@ -2362,19 +2334,13 @@ msgstr "Историја „%s“"
msgid "Bad history file format (line %d)"
msgstr "Лош формат датотеке историје (ред %d)"
-#: history/history.c:261 ncrypt/crypt_gpgme.c:818 ncrypt/crypt_gpgme.c:2249
-#: ncrypt/crypt_gpgme.c:2269 ncrypt/crypt_gpgme.c:2328
-#: ncrypt/crypt_gpgme.c:2345 ncrypt/crypt_gpgme.c:2377
-#: ncrypt/crypt_gpgme.c:2395 ncrypt/crypt_gpgme.c:2480
-#: ncrypt/crypt_gpgme.c:3071 ncrypt/crypt_gpgme.c:3171 ncrypt/dlggpgme.c:847
-#: ncrypt/dlgpgp.c:600 ncrypt/pgp.c:578 ncrypt/pgp.c:585 ncrypt/pgp.c:901
-#: ncrypt/pgp.c:1019 ncrypt/pgp.c:1168 ncrypt/pgp.c:1188 ncrypt/pgp.c:1222
-#: ncrypt/pgp.c:1581 ncrypt/pgpkey.c:260 ncrypt/pgpmicalg.c:191
-#: ncrypt/smime.c:883 ncrypt/smime.c:891 ncrypt/smime.c:984 ncrypt/smime.c:1096
-#: ncrypt/smime.c:1164 ncrypt/smime.c:1172 ncrypt/smime.c:1380
-#: ncrypt/smime.c:1791 ncrypt/smime.c:1869 ncrypt/smime.c:1876
-#: ncrypt/smime.c:1980 ncrypt/smime.c:2104 ncrypt/smime.c:2120 nntp/nntp.c:1296
-#: nntp/nntp.c:2151 pattern/exec.c:150 pop/pop.c:121
+#: history/history.c:261 ncrypt/crypt_gpgme.c:818 ncrypt/crypt_gpgme.c:2249 ncrypt/crypt_gpgme.c:2269 ncrypt/crypt_gpgme.c:2328
+#: ncrypt/crypt_gpgme.c:2345 ncrypt/crypt_gpgme.c:2377 ncrypt/crypt_gpgme.c:2395 ncrypt/crypt_gpgme.c:2480 ncrypt/crypt_gpgme.c:3071
+#: ncrypt/crypt_gpgme.c:3171 ncrypt/dlggpgme.c:847 ncrypt/dlgpgp.c:600 ncrypt/pgp.c:578 ncrypt/pgp.c:585 ncrypt/pgp.c:901 ncrypt/pgp.c:1019
+#: ncrypt/pgp.c:1168 ncrypt/pgp.c:1188 ncrypt/pgp.c:1222 ncrypt/pgp.c:1581 ncrypt/pgpkey.c:260 ncrypt/pgpmicalg.c:191 ncrypt/smime.c:883
+#: ncrypt/smime.c:891 ncrypt/smime.c:984 ncrypt/smime.c:1096 ncrypt/smime.c:1164 ncrypt/smime.c:1172 ncrypt/smime.c:1380 ncrypt/smime.c:1791
+#: ncrypt/smime.c:1869 ncrypt/smime.c:1876 ncrypt/smime.c:1980 ncrypt/smime.c:2104 ncrypt/smime.c:2120 nntp/nntp.c:1296 nntp/nntp.c:2151
+#: pattern/exec.c:150 pop/pop.c:121
msgid "Can't create temporary file"
msgstr "Не може се креирати привремена датотека"
@@ -2423,8 +2389,7 @@ msgid "%s: no macros for this menu"
msgstr "%s: нема макроа за овај мени"
#. L10N: '%s' is the file name of the temporary file
-#: icommands.c:285 icommands.c:306 icommands.c:332 icommands.c:370
-#: icommands.c:389 imap/message.c:1115
+#: icommands.c:285 icommands.c:306 icommands.c:332 icommands.c:370 icommands.c:389 imap/message.c:1115
#, c-format
msgid "Could not create temporary file %s"
msgstr "Не може се креирати привремена датотека %s"
@@ -2434,16 +2399,14 @@ msgid "No authenticators available or wrong credentials"
msgstr "Нема доступних аутентификатора или су овлашћења погрешна"
#. L10N: (%s) is the method name, e.g. Anonymous, CRAM-MD5, GSSAPI, SASL
-#: imap/auth_anon.c:56 imap/auth_cram.c:106 imap/auth_gss.c:168
-#: imap/auth_oauth.c:66 imap/auth_sasl.c:125 nntp/nntp.c:503 nntp/nntp.c:569
+#: imap/auth_anon.c:56 imap/auth_cram.c:106 imap/auth_gss.c:168 imap/auth_oauth.c:66 imap/auth_sasl.c:125 nntp/nntp.c:503 nntp/nntp.c:569
#: pop/auth.c:98 pop/auth.c:243 pop/auth.c:339 send/smtp.c:470 send/smtp.c:556
#, c-format
msgid "Authenticating (%s)..."
msgstr "Аутентификовање (%s)..."
#. L10N: %s is the method name, e.g. Anonymous, CRAM-MD5, GSSAPI, SASL
-#: imap/auth_anon.c:89 imap/auth_cram.c:180 imap/auth_gss.c:347
-#: imap/auth_oauth.c:99 imap/auth_sasl.c:257 nntp/nntp.c:664 pop/auth.c:196
+#: imap/auth_anon.c:89 imap/auth_cram.c:180 imap/auth_gss.c:347 imap/auth_oauth.c:99 imap/auth_sasl.c:257 nntp/nntp.c:664 pop/auth.c:196
#: pop/auth.c:264 send/smtp.c:621 send/smtp.c:695 send/smtp.c:784
#, c-format
msgid "%s authentication failed"
@@ -2675,8 +2638,7 @@ msgstr "Добављање поруке..."
msgid "The message index is incorrect. Try reopening the mailbox."
msgstr "Индекс порука није исправан. Покушајте да поново отворите сандуче."
-#: imap/msn.c:47 mutt/memory.c:58 mutt/memory.c:98 mutt/memory.c:134
-#: mutt/string.c:1112 mx.c:1218
+#: imap/msn.c:47 mutt/memory.c:58 mutt/memory.c:98 mutt/memory.c:134 mutt/string.c:1112 mx.c:1218
msgid "Out of memory"
msgstr "Нема меморије"
@@ -3001,13 +2963,11 @@ msgstr "Нема непрочитаних порука у овом ограни
msgid "No unread messages"
msgstr "Нема непрочитаних порука"
-#: index/dlg_index.c:3086 menu/menu.c:190 pager/dlg_pager.c:2894
-#: pattern/pattern.c:580 pattern/pattern.c:736
+#: index/dlg_index.c:3086 menu/menu.c:190 pager/dlg_pager.c:2894 pattern/pattern.c:580 pattern/pattern.c:736
msgid "Search wrapped to top"
msgstr "Претрага се вратила на почетак"
-#: index/dlg_index.c:3091 pager/dlg_pager.c:2921 pattern/pattern.c:591
-#: pattern/pattern.c:747
+#: index/dlg_index.c:3091 pager/dlg_pager.c:2921 pattern/pattern.c:591 pattern/pattern.c:747
msgid "Search wrapped to bottom"
msgstr "Претрага се вратила на дно"
@@ -3099,8 +3059,7 @@ msgstr "Нема Message-ID-а за макро"
msgid "Reply by mail as poster prefers?"
msgstr "Одговорити мејлом, као што постављач преферира?"
-#: index/dlg_index.c:3967 pager/dlg_pager.c:3595 pager/dlg_pager.c:3620
-#: pager/dlg_pager.c:3668
+#: index/dlg_index.c:3967 pager/dlg_pager.c:3595 pager/dlg_pager.c:3620 pager/dlg_pager.c:3668
msgid "Posting to this group not allowed, may be moderated. Continue?"
msgstr "Постављање у ову групу није дозвољено, можда је модерисана. Наставити?"
@@ -3233,15 +3192,13 @@ msgstr "maildir_commit_message(): не може се поставити врем
msgid "Scanning %s..."
msgstr "Скенирање %s..."
-#: maildir/maildir.c:702 maildir/mh.c:719 mbox/mbox.c:213 mbox/mbox.c:381
-#: mx.c:372
+#: maildir/maildir.c:702 maildir/mh.c:719 mbox/mbox.c:213 mbox/mbox.c:381 mx.c:372
#, c-format
msgid "Reading %s..."
msgstr "Читање %s..."
#. L10N: Displayed before/as a mailbox is being synced
-#: maildir/maildir.c:1389 maildir/mh.c:1045 mbox/mbox.c:1257 mx.c:479
-#: notmuch/notmuch.c:2215
+#: maildir/maildir.c:1389 maildir/mh.c:1045 mbox/mbox.c:1257 mx.c:479 notmuch/notmuch.c:2215
#, c-format
msgid "Writing %s..."
msgstr "Писање %s..."
@@ -3573,9 +3530,8 @@ msgstr "Не може се поново отворити сандуче"
msgid "Can't write message"
msgstr "Не може се исписати порука"
-#: menu/menu.c:66 menu/menu.c:481 menu/move.c:51 menu/move.c:105
-#: menu/move.c:177 menu/move.c:195 menu/move.c:213 menu/move.c:229
-#: menu/move.c:262 menu/move.c:277 menu/move.c:310
+#: menu/menu.c:66 menu/menu.c:481 menu/move.c:51 menu/move.c:105 menu/move.c:177 menu/move.c:195 menu/move.c:213 menu/move.c:229 menu/move.c:262
+#: menu/move.c:277 menu/move.c:310
msgid "No entries"
msgstr "Нема уноса"
@@ -3587,18 +3543,15 @@ msgstr "Скочи на: "
msgid "Invalid index number"
msgstr "Неисправан број индекса"
-#: menu/menu.c:154 pager/dlg_pager.c:2945 pattern/pattern.c:506
-#: pattern/pattern.c:664
+#: menu/menu.c:154 pager/dlg_pager.c:2945 pattern/pattern.c:506 pattern/pattern.c:664
msgid "Search for: "
msgstr "Тражи: "
-#: menu/menu.c:155 pager/dlg_pager.c:2946 pattern/pattern.c:506
-#: pattern/pattern.c:664
+#: menu/menu.c:155 pager/dlg_pager.c:2946 pattern/pattern.c:506 pattern/pattern.c:664
msgid "Reverse search for: "
msgstr "Тражи уназад: "
-#: menu/menu.c:209 pager/dlg_pager.c:2891 pager/dlg_pager.c:2918
-#: pager/dlg_pager.c:3055 pattern/pattern.c:638 pattern/pattern.c:794
+#: menu/menu.c:209 pager/dlg_pager.c:2891 pager/dlg_pager.c:2918 pager/dlg_pager.c:3055 pattern/pattern.c:638 pattern/pattern.c:794
msgid "Not found"
msgstr "Није пронађено"
@@ -3995,8 +3948,7 @@ msgstr "Убачени PGP се не може користити са format=flo
msgid "Mail not sent: inline PGP can't be used with format=flowed"
msgstr "Порука није послата: убачени PGP се не може користити са format=flowed"
-#: ncrypt/crypt.c:220 ncrypt/cryptglue.c:161 ncrypt/dlgpgp.c:606
-#: ncrypt/pgpkey.c:273
+#: ncrypt/crypt.c:220 ncrypt/cryptglue.c:161 ncrypt/dlgpgp.c:606 ncrypt/pgpkey.c:273
msgid "Invoking PGP..."
msgstr "Покрећем PGP..."
@@ -4080,8 +4032,7 @@ msgstr "грешка приликом омогућавања CMS протоко
msgid "error creating GPGME data object: %s"
msgstr "грешка приликом креирања GPGME објекта са подацима: %s"
-#: ncrypt/crypt_gpgme.c:719 ncrypt/crypt_gpgme.c:746 ncrypt/crypt_gpgme.c:1922
-#: ncrypt/crypt_gpgme.c:2684
+#: ncrypt/crypt_gpgme.c:719 ncrypt/crypt_gpgme.c:746 ncrypt/crypt_gpgme.c:1922 ncrypt/crypt_gpgme.c:2684
#, c-format
msgid "error allocating data object: %s"
msgstr "грешка приликом алоцирања објекта са подацима: %s"
@@ -4240,8 +4191,7 @@ msgstr "Проблематичан потпис од:"
msgid " expires: "
msgstr " истиче: "
-#: ncrypt/crypt_gpgme.c:1929 ncrypt/crypt_gpgme.c:2162
-#: ncrypt/crypt_gpgme.c:2956
+#: ncrypt/crypt_gpgme.c:1929 ncrypt/crypt_gpgme.c:2162 ncrypt/crypt_gpgme.c:2956
msgid "[-- Begin signature information --]\n"
msgstr "[-- Почетак информација о потпису --]\n"
@@ -4259,8 +4209,7 @@ msgstr "*** Почетак нотације (потпис од: %s) ***\n"
msgid "*** End Notation ***\n"
msgstr "*** Крај нотације ***\n"
-#: ncrypt/crypt_gpgme.c:2018 ncrypt/crypt_gpgme.c:2176
-#: ncrypt/crypt_gpgme.c:2966
+#: ncrypt/crypt_gpgme.c:2018 ncrypt/crypt_gpgme.c:2176 ncrypt/crypt_gpgme.c:2966
msgid ""
"[-- End signature information --]\n"
"\n"
@@ -4287,8 +4236,7 @@ msgstr "Грешка приликом увоза кључа: %s"
msgid "Error: decryption/verification failed: %s\n"
msgstr "Грешка: неуспешно дешифровање/верификација: %s\n"
-#: ncrypt/crypt_gpgme.c:2937 ncrypt/crypt_gpgme.c:3136 ncrypt/pgp.c:731
-#: ncrypt/pgp.c:1281
+#: ncrypt/crypt_gpgme.c:2937 ncrypt/crypt_gpgme.c:3136 ncrypt/pgp.c:731 ncrypt/pgp.c:1281
msgid "PGP message successfully decrypted"
msgstr "PGP порука успешно дешифрована"
@@ -4364,8 +4312,7 @@ msgstr "[-- Крај података потписаних и шифровани
msgid "[-- End of PGP/MIME encrypted data --]\n"
msgstr "[-- Крај података шифрованих преко PGP/MIME-а --]\n"
-#: ncrypt/crypt_gpgme.c:3144 ncrypt/pgp.c:669 ncrypt/pgp.c:722
-#: ncrypt/pgp.c:1285 postpone.c:687
+#: ncrypt/crypt_gpgme.c:3144 ncrypt/pgp.c:669 ncrypt/pgp.c:722 ncrypt/pgp.c:1285 postpone.c:687
msgid "Could not decrypt PGP message"
msgstr "Дешифровање PGP поруке није могуће"
@@ -4398,14 +4345,12 @@ msgstr "[-- Крај података шифрованих преко S/MIME-а
msgid "gpgme_op_keylist_start failed: %s"
msgstr "gpgme_op_keylist_start је неуспешно: %s"
-#: ncrypt/crypt_gpgme.c:3460 ncrypt/crypt_gpgme.c:3511
-#: ncrypt/crypt_gpgme.c:4028
+#: ncrypt/crypt_gpgme.c:3460 ncrypt/crypt_gpgme.c:3511 ncrypt/crypt_gpgme.c:4028
#, c-format
msgid "gpgme_op_keylist_next failed: %s"
msgstr "gpgme_op_keylist_next је неуспешно: %s"
-#: ncrypt/crypt_gpgme.c:3578 ncrypt/crypt_gpgme.c:3693 ncrypt/pgpkey.c:377
-#: ncrypt/pgpkey.c:506
+#: ncrypt/crypt_gpgme.c:3578 ncrypt/crypt_gpgme.c:3693 ncrypt/pgpkey.c:377 ncrypt/pgpkey.c:506
#, c-format
msgid "Looking for keys matching \"%s\"..."
msgstr "Траже се кључеви који одговарају „%s“..."
@@ -4420,8 +4365,7 @@ msgstr "Нису пронађени кључеви који одговарају
msgid "Use keyID = \"%s\" for %s?"
msgstr "Користити keyID = \"%s\" за %s?"
-#: ncrypt/crypt_gpgme.c:3910 ncrypt/pgp.c:1517 ncrypt/smime.c:754
-#: ncrypt/smime.c:840
+#: ncrypt/crypt_gpgme.c:3910 ncrypt/pgp.c:1517 ncrypt/smime.c:754 ncrypt/smime.c:840
#, c-format
msgid "Enter keyID for %s: "
msgstr "Унесите ИБкључа за %s: "
@@ -4596,8 +4540,7 @@ msgstr[2] "%s, %lu-битни %s\n"
msgid "encryption"
msgstr "шифровање"
-#: ncrypt/dlggpgme.c:674 ncrypt/dlggpgme.c:680 ncrypt/dlggpgme.c:814
-#: ncrypt/dlggpgme.c:819
+#: ncrypt/dlggpgme.c:674 ncrypt/dlggpgme.c:680 ncrypt/dlggpgme.c:814 ncrypt/dlggpgme.c:819
msgid ", "
msgstr ", "
@@ -4823,8 +4766,7 @@ msgstr ""
"[-- Грешка: не може се креирати PGP потпроцес --]\n"
"\n"
-#: ncrypt/pgp.c:1078 ncrypt/pgp.c:1105 ncrypt/smime.c:1967 postpone.c:797
-#: postpone.c:825
+#: ncrypt/pgp.c:1078 ncrypt/pgp.c:1105 ncrypt/smime.c:1967 postpone.c:797 postpone.c:825
msgid "Decryption failed"
msgstr "Неуспешно дешифровање"
@@ -4936,8 +4878,7 @@ msgstr "Унесите ИБкључа: "
msgid "No (valid) certificate found for %s"
msgstr "Није пронађен (исправан) сертификат за %s"
-#: ncrypt/smime.c:901 ncrypt/smime.c:930 ncrypt/smime.c:1004
-#: ncrypt/smime.c:1040 ncrypt/smime.c:1119 ncrypt/smime.c:1204
+#: ncrypt/smime.c:901 ncrypt/smime.c:930 ncrypt/smime.c:1004 ncrypt/smime.c:1040 ncrypt/smime.c:1119 ncrypt/smime.c:1204
msgid "Error: unable to create OpenSSL subprocess"
msgstr "Грешка: не може се креирати OpenSSL потпроцес"
@@ -6288,13 +6229,11 @@ msgstr "празна операција"
msgid "Not available in this menu"
msgstr "Није доступно у овом менију"
-#: pager/dlg_pager.c:179 pager/dlg_pager.c:190 pager/dlg_pager.c:200
-#: pager/dlg_pager.c:216
+#: pager/dlg_pager.c:179 pager/dlg_pager.c:190 pager/dlg_pager.c:200 pager/dlg_pager.c:216
msgid "PrevPg"
msgstr "ПретСтр"
-#: pager/dlg_pager.c:180 pager/dlg_pager.c:191 pager/dlg_pager.c:201
-#: pager/dlg_pager.c:217
+#: pager/dlg_pager.c:180 pager/dlg_pager.c:191 pager/dlg_pager.c:201 pager/dlg_pager.c:217
msgid "NextPg"
msgstr "СледСтр"
@@ -6318,13 +6257,11 @@ msgstr "све"
msgid "end"
msgstr "крај"
-#: pager/dlg_pager.c:2762 pager/dlg_pager.c:2803 pager/dlg_pager.c:2848
-#: pager/dlg_pager.c:3234
+#: pager/dlg_pager.c:2762 pager/dlg_pager.c:2803 pager/dlg_pager.c:2848 pager/dlg_pager.c:3234
msgid "Bottom of message is shown"
msgstr "Приказан је крај поруке"
-#: pager/dlg_pager.c:2777 pager/dlg_pager.c:2812 pager/dlg_pager.c:2821
-#: pager/dlg_pager.c:2834
+#: pager/dlg_pager.c:2777 pager/dlg_pager.c:2812 pager/dlg_pager.c:2821 pager/dlg_pager.c:2834
msgid "Top of message is shown"
msgstr "Приказан је почетак поруке"
@@ -6755,8 +6692,7 @@ msgstr "прекинуте нити"
msgid "IMAP custom server-side search for STRING"
msgstr "Прилагођена IMAP претрага сервера за ниском НИСКА"
-#: pattern/pattern.c:260 pattern/pattern.c:366 pattern/pattern.c:533
-#: pattern/pattern.c:689
+#: pattern/pattern.c:260 pattern/pattern.c:366 pattern/pattern.c:533 pattern/pattern.c:689
msgid "Compiling search pattern..."
msgstr "Компајлирање шеме за претрагу..."
@@ -6913,6 +6849,14 @@ msgstr "Недозвољено крипто заглавље"
msgid "Decrypting message..."
msgstr "Дешифровање поруке..."
+#: question/question.c:194
+msgid "yes"
+msgstr "да (y)"
+
+#: question/question.c:195
+msgid "no"
+msgstr "не (n)"
+
#: recvattach.c:74
msgid "Pipe"
msgstr "Проследи"
@@ -7463,9 +7407,3 @@ msgstr "Подразумеване опције:"
#: version.c:514
msgid "Compile options:"
msgstr "Опције за компајлирање:"
-
-#~ msgid "no"
-#~ msgstr "не (n)"
-
-#~ msgid "yes"
-#~ msgstr "да (y)"
diff --git a/util.c b/util.c
@@ -259,14 +259,14 @@ u32_lines_in_string(const uint32_t* s)
int
starts_with(const char* s, const char* with)
{
- while (*s == *with)
+ while (*s && *s == *with)
{
if (*s != *with)
return 0;
s++;
with++;
}
- return *s != 0 && *with == 0;
+ return *with == 0;
}
void