dtcreate: Replace broken GetBaseName with basename
authorFrederic Koehler <f.koehler427@gmail.com>
Fri, 17 Aug 2012 04:06:25 +0000 (00:06 -0400)
committerJon Trulson <jon@radscan.com>
Sat, 18 Aug 2012 01:04:13 +0000 (19:04 -0600)
GetBaseName causes segfaults, because when the pathname
ends in a "/" it returns NULL. This happens when trying
to give a valid filename to dtcreate for an icon.

cde/programs/dtcreate/cmnrtns.c

index 20c7f3549735f3ed39714e31ad93a281391951fd..38faa1c1d419dbe9f6b9ad8a25416ce5f61cb87b 100644 (file)
 #include <Dt/Icon.h>
 #include <X11/cursorfont.h>
 #include "UxXt.h"
+#include <libgen.h>
 
 #include "dtcreate.h"
 #include "CreateActionAppShell.h"
 #include "fileio.h"
 #include "cmnrtns.h"
 
-/*****************************************************************************/
-/*                                                                           */
-/*  GetBaseName                                                              */
-/*                                                                           */
-/*****************************************************************************/
-char * GetBaseName(char *pszFileName)
-{
-  char *name;
-
-  name = strrchr(pszFileName, '/');
-  if (name) {
-     name = strtok(name, "/");
-     return(name);
-  } else {
-     return(pszFileName);
-  }
-}
-
 /*****************************************************************************/
 /*                                                                           */
 /*  ReplaceSpaces                                                            */
@@ -273,7 +256,7 @@ void load_icons (Widget wid, XtPointer client_data,
   */
     {
     XtVaGetValues(IconSelector, XmNuserData, &iSource, NULL);
-    base_name = GetBaseName(path_and_base_name);
+    base_name = basename(path_and_base_name);
     ptr = XtMalloc(strlen(base_name) + 1);
     strcpy(ptr, base_name);
     switch (iSource) {