-/*
- * flist.c -- list nmh folders containing messages
+/* flist.c -- list nmh folders containing messages
* -- in a given sequence
*
* originally by
#include <h/mh.h>
#include <h/utils.h>
-
-#define FALSE 0
-#define TRUE 1
+#include "../sbr/m_maildir.h"
/*
* We allocate space to record the names of folders
typedef int (*qsort_comp) (const void *, const void *);
/*
- * prototypes
+ * static prototypes
*/
-int CompareFolders(struct Folder *, struct Folder *);
-void GetFolderOrder(void);
-void ScanFolders(void);
-int AddFolder(char *, int);
-void BuildFolderList(char *, int);
-void BuildFolderListRecurse(char *, struct stat *, int);
-void PrintFolders(void);
-void AllocFolders(struct Folder **, int *, int);
-int AssignPriority(char *);
+static int CompareFolders(struct Folder *, struct Folder *);
+static void GetFolderOrder(void);
+static void ScanFolders(void);
+static int AddFolder(char *, int);
+static void BuildFolderList(char *, int);
+static void BuildFolderListRecurse(char *, struct stat *, int);
+static void PrintFolders(void);
+static void AllocFolders(struct Folder **, int *, int);
+static int AssignPriority(char *);
static void do_readonly_folders(void);
* If program was invoked with name ending
* in `s', then add switch `-all'.
*/
- if (argv[0][strlen (argv[0]) - 1] == 's')
- all = TRUE;
+ all = has_suffix_c(argv[0], 's');
arguments = getarguments (invo_name, argc, argv, 1);
argp = arguments;
if ((cp = context_find(usequence)) && *cp) {
char **ap, *dp;
- dp = getcpy(cp);
+ dp = mh_xstrdup(cp);
ap = brkstring (dp, " ", "\n");
for (; ap && *ap; ap++)
svector_push_back (sequencesToDo, *ap);
* how to sort folders for output.
*/
-void
+static void
GetFolderOrder(void)
{
char *p, *s;
* Scan all the necessary folders
*/
-void
+static void
ScanFolders(void)
{
int i;
* the top of our search tree.
*/
-void
+static void
BuildFolderList(char *dirName, int searchdepth)
{
struct stat st;
* Recursive building of folder list
*/
-void
+static void
BuildFolderListRecurse(char *dirName, struct stat *s, int searchdepth)
{
char *base, name[PATH_MAX];
* messages and the number of messages in each sequence.
*/
-int
+static int
AddFolder(char *name, int force)
{
unsigned int i;
/* Oops, error occurred. Record it and continue. */
AllocFolders(&folders, &nFoldersAlloced, nFolders + 1);
f = &folders[nFolders++];
- f->name = getcpy(name);
+ f->name = mh_xstrdup(name);
f->error = 1;
f->priority = AssignPriority(f->name);
return 0;
/* save general folder information */
AllocFolders(&folders, &nFoldersAlloced, nFolders + 1);
f = &folders[nFolders++];
- f->name = getcpy(name);
+ f->name = mh_xstrdup(name);
f->nMsgs = mp->nummsg;
f->nSeq = ivector_create (0);
f->private = ivector_create (0);
* Print the folder/sequence information
*/
-void
+static void
PrintFolders(void)
{
char tmpname[BUFSIZ];
if (!Total) {
for (i = 0; i < nFolders; i++)
- printf("%s\n", folders[i].name);
+ puts(folders[i].name);
return;
}
* Put them in priority order.
*/
-int
+static int
CompareFolders(struct Folder *f1, struct Folder *f2)
{
if (!alphaOrder && f1->priority != f2->priority)
return f1->priority - f2->priority;
- else
- return strcmp(f1->name, f2->name);
+ return strcmp(f1->name, f2->name);
}
/*
* Make sure we have at least n folders allocated.
*/
-void
+static void
AllocFolders(struct Folder **f, int *nfa, int n)
{
if (n <= *nfa)
* Return the priority for a name. The highest comes from an exact match.
* After that, the longest match (then first) assigns the priority.
*/
-int
+static int
AssignPriority(char *name)
{
int i, ol, nl;
{
int atrlen;
char atrcur[BUFSIZ];
- register struct node *np;
+ struct node *np;
snprintf (atrcur, sizeof(atrcur), "atr-%s-", current);
atrlen = strlen (atrcur);