From 60b3d49f56936204b7f03015ceb710c859b31509 Mon Sep 17 00:00:00 2001 From: Laurent Mazet Date: Sat, 18 Jan 2025 16:17:10 +0100 Subject: [PATCH] remove ./ from directory name --- fm.c | 29 +++++++++++++---------------- function.c | 17 +++++++++-------- 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/fm.c b/fm.c index 14b28d1..7b5805f 100644 --- a/fm.c +++ b/fm.c @@ -91,10 +91,11 @@ int main (int argc, char *argv[]) VERBOSE (ERROR, fprintf (stderr, "%s: no directory name\n", progname)); return usage (1); } - if (dirname[panel] == NULL) { + if (dirname[panel] != NULL) { free (dirname[panel]); } dirname[panel] = strdup (arg); + CHECKALLOC (dirname[panel]); panel = (panel + 1) % MAXPANELS; break; case 'v': @@ -127,9 +128,6 @@ int main (int argc, char *argv[]) } } for (i = 0; i < MAXPANELS; i++) { - if (dirname[i] == NULL) { - dirname[i] = strdup ("."); - } } /* init curses */ @@ -212,7 +210,7 @@ int main (int argc, char *argv[]) freelist (list[_i]); freewindow (windir[_i]); } - VERBOSE (ERROR, fprintf (stderr, "can't read directory '%s'\n", dirname[i])); + VERBOSE (ERROR, fprintf (stderr, "can't read directory '%s'\n", (dirname[i]) ? dirname[i] : ".")); return 1; } } @@ -314,8 +312,8 @@ int main (int argc, char *argv[]) for (i = 0; i < list[panel]->nb; i++) { current = list[panel]->tab + i; if (current->selected) { - char *src = strdupcat (dirname[panel], SEPARATOR, current->name, NULL); - char *dest = strdupcat (dirname[(panel + 1 ) % MAXPANELS], NULL); + char *src = newfilename (dirname[panel], current->name); + char *dest = dirname[(panel + 1 ) % MAXPANELS]; char *msg = processcopy (dest, src); if (msg) { msgwindow (msg, winscreen, 0); @@ -323,7 +321,6 @@ int main (int argc, char *argv[]) free (msg); } free (src); - free (dest); } } freelist (list[panel]); @@ -335,7 +332,7 @@ int main (int argc, char *argv[]) for (i = 0; i < list[panel]->nb; i++) { current = list[panel]->tab + i; if (current->selected) { - char *src = strdupcat (dirname[panel], SEPARATOR, current->name, NULL); + char *src = newfilename (dirname[panel], current->name); char *msg = processdelete (src); if (msg) { msgwindow (msg, winscreen, 0); @@ -365,8 +362,8 @@ int main (int argc, char *argv[]) for (i = 0; i < list[panel]->nb; i++) { current = list[panel]->tab + i; if (current->selected) { - char *src = strdupcat (dirname[panel], SEPARATOR, current->name, NULL); - char *dest = strdupcat (dirname[(panel + 1 ) % MAXPANELS], SEPARATOR, current->name, NULL); + char *src = newfilename (dirname[panel], current->name); + char *dest = newfilename (dirname[(panel + 1 ) % MAXPANELS], current->name); char *msg = processmove (dest, src); if (msg) { msgwindow (msg, winscreen, 0); @@ -385,7 +382,7 @@ int main (int argc, char *argv[]) case ALT_N: /* new dir */ string = getwindow ("New directory", winscreen, MAXFNAME / 2, MAXFNAME, NULL); if (string) { - char *dest = strdupcat (dirname[panel], SEPARATOR, string, NULL); + char *dest = newfilename (dirname[panel], string); char *msg = processmkdir (dest); if (msg) { msgwindow (msg, winscreen, 0); @@ -414,8 +411,8 @@ int main (int argc, char *argv[]) getch (); free (buf); } else { - char *src = strdupcat (dirname[panel], SEPARATOR, current->name, NULL); - char *dest = strdupcat (dirname[panel], SEPARATOR, string, NULL); + char *src = newfilename (dirname[panel], current->name); + char *dest = newfilename (dirname[panel], string); char *msg = processmove (dest, src); if (msg) { msgwindow (msg, winscreen, 0); @@ -444,7 +441,7 @@ int main (int argc, char *argv[]) menuwindow (winmenu, "Help up(I) down(J) Quit", NULL); elementwindow (winelem[0], current->name, NULL); { - char *src = strdupcat (dirname[panel], SEPARATOR, current->name, NULL); + char *src = newfilename (dirname[panel], current->name); char *msg = filewindow (src, winscreen); if (msg) { msgwindow (msg, winscreen, 0); @@ -469,7 +466,7 @@ int main (int argc, char *argv[]) for (i = 0; i < list[panel]->nb; i++) { current = list[panel]->tab + i; if (current->selected) { - char *src = strdupcat (dirname[panel], SEPARATOR, current->name, NULL); + char *src = newfilename (dirname[panel], current->name); char *msg = processchmod (src, mode); if (msg) { msgwindow (msg, winscreen, 0); diff --git a/function.c b/function.c index 6d74df0..62cfd1b 100644 --- a/function.c +++ b/function.c @@ -42,12 +42,14 @@ char *strdupcat (char *init, ...) va_start (va, init); char *string = strdup (init); + CHECKALLOC (string); for (;;) { char *buf = va_arg (va, char *); if (buf == NULL) { break; } string = (char *) realloc (string, strlen (string) + strlen (buf) + 1); + CHECKALLOC (string); strcat (string, buf); } @@ -83,9 +85,8 @@ char *itoo (int x) char *newfilename (char *dirname, char *filename) { - char *name = (char *) calloc (strlen (dirname) + strlen (SEPARATOR) + strlen (filename) + 1, 1); + char *name = (dirname) ? strdupcat (dirname, SEPARATOR, filename, NULL) : strdup (filename); CHECKALLOC (name); - strcat (strcat(strcpy (name, dirname), SEPARATOR), filename); return name; } @@ -175,7 +176,7 @@ list_t *_addelement (list_t *list, char *dirname, char *filename, type_t type) list_t *exploredir (char *dirname) { - DIR *dir = opendir (dirname); + DIR *dir = opendir (dirname ? dirname : "."); if (dir == NULL) { return NULL; } @@ -432,7 +433,7 @@ char *processcopy (char *dest, char *src) char *basename = strrchr (src, *SEPARATOR); basename = (basename) ? basename + 1 : src; VERBOSE (DEBUG, fprintf (stderr, "basename '%s'\n", basename)); - char *nextdest = strdupcat (dest, SEPARATOR, basename, NULL); + char *nextdest = newfilename (dest, basename); VERBOSE (DEBUG, fprintf (stderr, "mkdir '%s'\n", nextdest)); if (MKDIR (nextdest) != 0) { msg = strdupcat ("Can't create directory '", nextdest, "'", NULL); @@ -445,7 +446,7 @@ char *processcopy (char *dest, char *src) if ((strcmp (dp->d_name, ".") == 0) || (strcmp (dp->d_name, "..") == 0)) { continue; } - char *nextsrc = strdupcat (src, SEPARATOR, dp->d_name, NULL); + char *nextsrc = newfilename (src, dp->d_name); msg = processcopy (nextdest, nextsrc); free (nextsrc); } @@ -459,7 +460,7 @@ char *processcopy (char *dest, char *src) char *basename = strrchr (src, *SEPARATOR); basename = (basename) ? basename + 1 : src; VERBOSE (DEBUG, fprintf (stderr, "basename '%s'\n", basename)); - char *newdest = strdupcat (dest, SEPARATOR, basename, NULL); + char *newdest = newfilename (dest, basename); struct stat sb; if (STAT (newdest, &sb) == 0) { msg = strdupcat ("File '", newdest, "' already exists", NULL); @@ -492,7 +493,7 @@ char *processdelete (char *name) if ((strcmp (dp->d_name, ".") == 0) || (strcmp (dp->d_name, "..") == 0)) { continue; } - char *next = strdupcat (name, SEPARATOR, dp->d_name, NULL); + char *next = newfilename (name, dp->d_name); msg = processdelete (next); free (next); } @@ -569,7 +570,7 @@ char *processchmod (char *name, int mode) if ((strcmp (dp->d_name, ".") == 0) || (strcmp (dp->d_name, "..") == 0)) { continue; } - char *next = strdupcat (name, SEPARATOR, dp->d_name, NULL); + char *next = newfilename (name, dp->d_name); msg = processchmod (next, mode); free (next); } -- 2.30.2