X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=browser.c;h=aa91a6045048b3c3b83adc6ecdd55ee3a2bd17f1;hp=a9437dd0d68702eda99c2897dc05793599903912;hb=c1a6303fea322f1de432897524b25fa238896225;hpb=86c5af6b888685ff4337090e37ba72ad040df965 diff --git a/browser.c b/browser.c index a9437dd..aa91a60 100644 --- a/browser.c +++ b/browser.c @@ -65,9 +65,9 @@ static void destroy_state (struct browser_state *state) int c; for (c = 0; c < state->entrylen; c++) { - p_delete(&((state->entry)[c].name)); - p_delete(&((state->entry)[c].desc)); - p_delete(&((state->entry)[c].st)); + p_delete(&state->entry[c].name); + p_delete(&state->entry[c].desc); + p_delete(&state->entry[c].st); } p_delete(&state->folder); p_delete(&state->entry); @@ -145,16 +145,16 @@ static int link_is_dir (const char *folder, const char *path) return 0; } -static const char *folder_format_str (char *dest, ssize_t destlen, char op, - const char *src, const char *fmt, - const char *ifstring, - const char *elsestring, - unsigned long data, format_flag flags) +static const char * +folder_format_str(char *dest, ssize_t destlen, char op, + const char *src, const char *fmt, + const char *ifstr, const char *elstr, + anytype data, format_flag flags) { - char fn[SHORT_STRING], tmp[SHORT_STRING], permission[11], date[16]; + char fn[STRING], tmp[STRING], permission[11], date[16]; const char *t_fmt; time_t tnow; - FOLDER *folder = (FOLDER *) data; + FOLDER *folder = data.ptr; struct passwd *pw; struct group *gr; int optional = (flags & M_FORMAT_OPTIONAL); @@ -184,9 +184,9 @@ static const char *folder_format_str (char *dest, ssize_t destlen, char op, const char *s; if (folder->ff->imap) - s = NONULL (folder->ff->desc); + s = NONULL(folder->ff->desc); else - s = NONULL (folder->ff->name); + s = NONULL(folder->ff->name); snprintf (fn, sizeof (fn), "%s%s", s, folder->ff->st ? (S_ISLNK (folder->ff->st->st_mode) ? "@" : @@ -200,9 +200,8 @@ static const char *folder_format_str (char *dest, ssize_t destlen, char op, case 'F': if (folder->ff->st != NULL) { snprintf (permission, sizeof (permission), "%c%c%c%c%c%c%c%c%c%c", - S_ISDIR (folder->ff->st-> - st_mode) ? 'd' : (S_ISLNK (folder->ff->st-> - st_mode) ? 'l' : '-'), + S_ISDIR(folder->ff->st-> st_mode) + ? 'd' : (S_ISLNK(folder->ff->st-> st_mode) ? 'l' : '-'), (folder->ff->st->st_mode & S_IRUSR) != 0 ? 'r' : '-', (folder->ff->st->st_mode & S_IWUSR) != 0 ? 'w' : '-', (folder->ff->st->st_mode & S_ISUID) != @@ -300,24 +299,23 @@ static const char *folder_format_str (char *dest, ssize_t destlen, char op, break; } - if (optional) - mutt_FormatString (dest, destlen, ifstring, folder_format_str, data, 0); - else if (flags & M_FORMAT_OPTIONAL) - mutt_FormatString (dest, destlen, elsestring, folder_format_str, data, 0); - return (src); + if (flags & M_FORMAT_OPTIONAL) + m_strformat(dest, destlen, 0, optional ? ifstr : elstr, + folder_format_str, data, 0); + + return src; } #ifdef USE_NNTP -static const char *newsgroup_format_str (char *dest, ssize_t destlen, char op, - const char *src, const char *fmt, - const char *ifstring, - const char *elsestring, - unsigned long data, - format_flag flags) +static const char * +newsgroup_format_str(char *dest, ssize_t destlen, char op, + const char *src, const char *fmt, + const char *ifstr, const char *elstr, + anytype data, format_flag flags) { - char fn[SHORT_STRING], tmp[SHORT_STRING]; - FOLDER *folder = (FOLDER *) data; + char fn[STRING], tmp[STRING]; + FOLDER *folder = data.ptr; switch (op) { case 'C': @@ -350,11 +348,11 @@ static const char *newsgroup_format_str (char *dest, ssize_t destlen, char op, case 's': if (flags & M_FORMAT_OPTIONAL) { if (folder->ff->nd->unread != 0) - mutt_FormatString (dest, destlen, ifstring, newsgroup_format_str, - data, flags); + m_strformat(dest, destlen, 0, ifstr, newsgroup_format_str, + data, flags); else - mutt_FormatString (dest, destlen, elsestring, newsgroup_format_str, - data, flags); + m_strformat (dest, destlen, 0, elstr, newsgroup_format_str, + data, flags); } else if (Context && Context->data == folder->ff->nd) { snprintf (tmp, sizeof (tmp), "%%%sd", fmt); @@ -462,16 +460,11 @@ static int examine_directory (MUTTMENU * menu, struct browser_state *state, if (!(data = (NNTP_DATA *) tmp->data)) continue; nntp_sync_sidebar (data); - if (prefix && *prefix && strncmp (prefix, data->group, - m_strlen(prefix)) != 0) + if (m_strncmp (prefix, data->group, m_strlen(prefix)) != 0) continue; - if (!((regexec (Mask.rx, data->group, 0, NULL, 0) == 0) ^ Mask.not)) + if (!((regexec (Mask.rx, data->group, 0, NULL, 0) == 0) ^ Mask.neg)) continue; -#ifdef USE_NNTP add_folder (menu, state, data->group, NULL, data, data->new); -#else - add_folder (menu, state, data->group, NULL, data->new); -#endif } sidebar_draw (); } @@ -481,7 +474,7 @@ static int examine_directory (MUTTMENU * menu, struct browser_state *state, struct stat s; DIR *dp; struct dirent *de; - char buffer[_POSIX_PATH_MAX + SHORT_STRING]; + char buffer[_POSIX_PATH_MAX + STRING]; int i = -1; while (stat (d, &s) == -1) { @@ -516,10 +509,9 @@ static int examine_directory (MUTTMENU * menu, struct browser_state *state, if (m_strcmp(de->d_name, ".") == 0) continue; /* we don't need . */ - if (prefix && *prefix - && m_strncmp(prefix, de->d_name, m_strlen(prefix)) != 0) + if (m_strncmp(prefix, de->d_name, m_strlen(prefix)) != 0) continue; - if (!((regexec (Mask.rx, de->d_name, 0, NULL, 0) == 0) ^ Mask.not)) + if (!((regexec (Mask.rx, de->d_name, 0, NULL, 0) == 0) ^ Mask.neg)) continue; mutt_concat_path(buffer, sizeof(buffer), d, de->d_name); @@ -647,12 +639,12 @@ static void folder_entry (char *s, ssize_t slen, MUTTMENU * menu, int num) #ifdef USE_NNTP if (option (OPTNEWS)) - mutt_FormatString (s, slen, NONULL (GroupFormat), newsgroup_format_str, - (unsigned long) &folder, M_FORMAT_ARROWCURSOR); + m_strformat(s, slen, COLS - SW, GroupFormat, newsgroup_format_str, &folder, + option(OPTARROWCURSOR) ? M_FORMAT_ARROWCURSOR : 0); else #endif - mutt_FormatString (s, slen, NONULL (FolderFormat), folder_format_str, - (unsigned long) &folder, M_FORMAT_ARROWCURSOR); + m_strformat(s, slen, COLS - SW, FolderFormat, folder_format_str, &folder, + option(OPTARROWCURSOR) ? M_FORMAT_ARROWCURSOR : 0); } static void init_menu (struct browser_state *state, MUTTMENU * menu, @@ -719,7 +711,7 @@ void _mutt_select_file (char *f, ssize_t flen, int flags, char ***files, { char buf[_POSIX_PATH_MAX]; char prefix[_POSIX_PATH_MAX] = ""; - char helpstr[SHORT_STRING]; + char helpstr[STRING]; char title[STRING]; struct browser_state state; MUTTMENU *menu; @@ -780,7 +772,7 @@ void _mutt_select_file (char *f, ssize_t flen, int flags, char ***files, } else { if (f[0] == '/') - strcpy (LastDir, "/"); /* __STRCPY_CHECKED__ */ + m_strcpy(LastDir, sizeof(LastDir), "/"); else getcwd (LastDir, sizeof (LastDir)); } @@ -871,7 +863,7 @@ void _mutt_select_file (char *f, ssize_t flen, int flags, char ***files, if (m_strcmp(state.entry[menu->current].name, "..") == 0) { if (m_strcmp("..", LastDir + m_strlen(LastDir) - 2) == 0) - strcat (LastDir, "/.."); /* __STRCAT_CHECKED__ */ + m_strcat(LastDir, sizeof(LastDir), "/.."); else { char *p = strrchr (LastDir + 1, '/'); @@ -881,7 +873,7 @@ void _mutt_select_file (char *f, ssize_t flen, int flags, char ***files, if (LastDir[0] == '/') LastDir[1] = 0; else - strcat (LastDir, "/.."); /* __STRCAT_CHECKED__ */ + m_strcat(LastDir, sizeof(LastDir), "/.."); } } } @@ -934,7 +926,7 @@ void _mutt_select_file (char *f, ssize_t flen, int flags, char ***files, /* try to restore the old values */ m_strcpy(LastDir, sizeof(LastDir), OldLastDir); if (examine_directory (menu, &state, LastDir, prefix) == -1) { - m_strcpy(LastDir, sizeof(LastDir), NONULL(Homedir)); + m_strcpy(LastDir, sizeof(LastDir), NONULL(MCore.homedir)); goto bail; } } @@ -1056,7 +1048,7 @@ void _mutt_select_file (char *f, ssize_t flen, int flags, char ***files, if (!state.entry[menu->current].imap) mutt_error (_("Delete is only supported for IMAP mailboxes")); else { - char msg[SHORT_STRING]; + char msg[STRING]; IMAP_MBOX mx; int nentry = menu->current; @@ -1152,7 +1144,7 @@ void _mutt_select_file (char *f, ssize_t flen, int flags, char ***files, if (mutt_get_field (_("File Mask: "), buf, sizeof (buf), 0) == 0) { regex_t *rx = p_new(regex_t, 1); char *s = buf; - int not = 0, err; + int neg = 0, err; buffy = 0; /* assume that the user wants to see everything */ @@ -1161,7 +1153,7 @@ void _mutt_select_file (char *f, ssize_t flen, int flags, char ***files, s = vskipspaces(s); if (*s == '!') { s = vskipspaces(s + 1); - not = 1; + neg = 1; } if ((err = REGCOMP (rx, s, REG_NOSUB)) != 0) { @@ -1175,7 +1167,7 @@ void _mutt_select_file (char *f, ssize_t flen, int flags, char ***files, regfree (Mask.rx); p_delete(&Mask.rx); Mask.rx = rx; - Mask.not = not; + Mask.neg = neg; destroy_state (&state); if (state.imap_browse) {