}
/* Examine if next block is non-ASCII string */
-gboolean is_next_nonascii(const wchar_t *s)
+gboolean is_next_nonascii(const guchar *s)
{
- const wchar_t *wp;
+ const guchar *p;
/* skip head space */
- for (wp = s; *wp != (wchar_t)0 && iswspace(*wp); wp++)
+ for (p = s; *p != '\0' && isspace(*p); p++)
;
- for (; *wp != (wchar_t)0 && !iswspace(*wp); wp++) {
- if (*wp > 127)
+ for (; *p != '\0' && !isspace(*p); p++) {
+ if (*p > 127 || *p < 32)
return TRUE;
}
return FALSE;
}
-/* Examine if next block is multi-byte string */
-gboolean is_next_mbs(const wchar_t *s)
+gint get_next_word_len(const gchar *s)
{
- gint mbl;
- const wchar_t *wp;
- gchar tmp[MB_LEN_MAX];
+ gint len = 0;
- /* skip head space */
- for (wp = s; *wp != (wchar_t)0 && iswspace(*wp); wp++)
- ;
- for (; *wp != (wchar_t)0 && !iswspace(*wp); wp++) {
- mbl = wctomb(tmp, *wp);
- if (mbl > 1)
- return TRUE;
- }
-
- return FALSE;
-}
-
-wchar_t *find_wspace(const wchar_t *s)
-{
- const wchar_t *wp;
-
- for (wp = s; *wp != (wchar_t)0 && iswspace(*wp); wp++)
+ for (; *s != '\0' && !isspace(*s); s++, len++)
;
- for (; *wp != (wchar_t)0; wp++) {
- if (iswspace(*wp))
- return (wchar_t *)wp;
- }
- return NULL;
+ return len;
}
/* compare subjects */
while (len > 0) {
n_write = write(dest_fd, bufp, len);
if (n_write <= 0) {
- g_warning(_("writing to %s failed.\n"), dest);
+ g_warning("writing to %s failed.\n", dest);
close(dest_fd);
close(src_fd);
unlink(dest);
close(dest_fd);
if (n_read < 0 || get_file_size(src) != get_file_size(dest)) {
- g_warning(_("File copy from %s to %s failed.\n"), src, dest);
+ g_warning("File copy from %s to %s failed.\n", src, dest);
unlink(dest);
if (dest_bak) {
if (rename(dest_bak, dest) < 0)
if (change_file_mode_rw(dest_fp, dest) < 0) {
FILE_OP_ERROR(dest, "chmod");
- g_warning(_("can't change file mode\n"));
+ g_warning("can't change file mode\n");
}
while ((n_read = fread(buf, sizeof(gchar), sizeof(buf), src_fp)) > 0) {
if (n_read < sizeof(buf) && ferror(src_fp))
break;
if (fwrite(buf, n_read, 1, dest_fp) < 1) {
- g_warning(_("writing to %s failed.\n"), dest);
+ g_warning("writing to %s failed.\n", dest);
fclose(dest_fp);
fclose(src_fp);
unlink(dest);
if (change_file_mode_rw(dest_fp, dest) < 0) {
FILE_OP_ERROR(dest, "chmod");
- g_warning(_("can't change file mode\n"));
+ g_warning("can't change file mode\n");
}
while ((n_read = fread(buf, sizeof(gchar), sizeof(buf), src_fp)) > 0) {
if (n_read < sizeof(buf) && ferror(src_fp))
break;
if (fwrite(buf, n_read, 1, dest_fp) < 1) {
- g_warning(_("writing to %s failed.\n"), dest);
+ g_warning("writing to %s failed.\n", dest);
fclose(dest_fp);
fclose(src_fp);
unlink(dest);
if (n_read < to_read && ferror(fp))
break;
if (fwrite(buf, n_read, 1, dest_fp) < 1) {
- g_warning(_("writing to %s failed.\n"), dest);
+ g_warning("writing to %s failed.\n", dest);
fclose(dest_fp);
unlink(dest);
return -1;
gint open_uri(const gchar *uri, const gchar *cmdline)
{
- static gchar *default_cmdline = "netscape -remote openURL(%s,raise)";
gchar buf[BUFFSIZE];
gchar *p;
gchar encoded_uri[BUFFSIZE];
g_snprintf(buf, sizeof(buf), cmdline, encoded_uri);
else {
if (cmdline)
- g_warning(_("Open URI command line is invalid: `%s'"),
+ g_warning("Open URI command line is invalid: `%s'",
cmdline);
- g_snprintf(buf, sizeof(buf), default_cmdline, encoded_uri);
+ g_snprintf(buf, sizeof(buf), DEFAULT_BROWSER_CMD, encoded_uri);
}
execute_command_line(buf, TRUE);
/* allow Mutt-like patterns in quick search */
gchar *expand_search_string(const gchar *search_string)
{
- int i, len, new_len = 0;
+ int i = 0;
gchar term_char, save_char;
gchar *cmd_start, *cmd_end;
- gchar *new_str = NULL;
+ GString *matcherstr;
+ gchar *returnstr = NULL;
gchar *copy_str;
gboolean casesens, dontmatch;
/* list of allowed pattern abbreviations */
{ "h", "headers_part", 1, TRUE, TRUE },
{ "i", "header \"Message-Id\"", 1, TRUE, TRUE },
{ "I", "inreplyto", 1, TRUE, TRUE },
+ { "L", "locked", 0, FALSE, FALSE },
{ "n", "newsgroups", 1, TRUE, TRUE },
{ "N", "new", 0, FALSE, FALSE },
{ "O", "~new", 0, FALSE, FALSE },
/* if it's a full command don't process it so users
can still do something like from regexpcase "foo" */
for (i = 0; cmds[i].command; i++) {
+ const gchar *tmp_search_string = search_string;
cmd_start = cmds[i].command;
/* allow logical NOT */
- if (*search_string == '~')
- search_string++;
- if (!strncmp(search_string, cmd_start, strlen(cmd_start)))
+ if (*tmp_search_string == '~')
+ tmp_search_string++;
+ if (!strncmp(tmp_search_string, cmd_start, strlen(cmd_start)))
break;
}
if (cmds[i].command)
return copy_str;
+ matcherstr = g_string_sized_new(16);
cmd_start = cmd_end = copy_str;
while (cmd_end && *cmd_end) {
/* skip all white spaces */
if (!strcmp(cmd_start, cmds[i].abbreviated)) {
/* restore character */
*cmd_end = save_char;
- len = strlen(cmds[i].command) + 1;
- if (dontmatch)
- len++;
- if (casesens)
- len++;
/* copy command */
- if (new_str) {
- new_len += 1;
- new_str = g_realloc(new_str, new_len);
- strcat(new_str, " ");
+ if (matcherstr->len > 0) {
+ g_string_append(matcherstr, " ");
}
- new_len += (len + 1);
- new_str = g_realloc(new_str, new_len);
- if (new_len == len + 1)
- *new_str = '\0';
if (dontmatch)
- strcat(new_str, "~");
- strcat(new_str, cmds[i].command);
- strcat(new_str, " ");
+ g_string_append(matcherstr, "~");
+ g_string_append(matcherstr, cmds[i].command);
+ g_string_append(matcherstr, " ");
/* stop if no params required */
if (cmds[i].numparams == 0)
save_char = *cmd_end;
*cmd_end = '\0';
- new_len += strlen(cmd_start);
-
- /* do we need to add regexpcase ? */
- if (cmds[i].qualifier)
- new_len += 10; /* "regexpcase " */
-
- if (term_char != '"')
- new_len += 2;
- new_str = g_realloc(new_str, new_len);
-
if (cmds[i].qualifier) {
if (casesens)
- strcat(new_str, "regexp ");
+ g_string_append(matcherstr, "regexp ");
else
- strcat(new_str, "regexpcase ");
+ g_string_append(matcherstr, "regexpcase ");
}
/* do we need to add quotes ? */
if (cmds[i].quotes && term_char != '"')
- strcat(new_str, "\"");
+ g_string_append(matcherstr, "\"");
/* copy actual parameter */
- strcat(new_str, cmd_start);
+ g_string_append(matcherstr, cmd_start);
/* do we need to add quotes ? */
if (cmds[i].quotes && term_char != '"')
- strcat(new_str, "\"");
+ g_string_append(matcherstr, "\"");
/* restore original character */
*cmd_end = save_char;
}
g_free(copy_str);
- return new_str;
+ returnstr = matcherstr->str;
+ g_string_free(matcherstr, FALSE);
+ return returnstr;
}