-//from http://stackoverflow.com/questions/2736753/how-to-remove-extension-from-file-name\r
-\r
-// remove_ext: removes the "extension" from a file spec.\r
-// mystr is the string to process.\r
-// dot is the extension separator.\r
-// sep is the path separator (0 means to ignore).\r
-// Returns an allocated string identical to the original but\r
-// with the extension removed. It must be freed when you're\r
-// finished with it.\r
-// If you pass in NULL or the new string can't be allocated,\r
-// it returns NULL.\r
-\r
-char *remove_ext (char* mystr, char dot, char sep) {\r
- char *retstr, *lastdot, *lastsep;\r
-\r
- // Error checks and allocate string.\r
-\r
- if (mystr == NULL)\r
- return NULL;\r
- if ((retstr = malloc (strlen (mystr) + 1)) == NULL)\r
- return NULL;\r
-\r
- // Make a copy and find the relevant characters.\r
-\r
- strcpy (retstr, mystr);\r
- lastdot = strrchr (retstr, dot);\r
- lastsep = (sep == 0) ? NULL : strrchr (retstr, sep);\r
-\r
- // If it has an extension separator.\r
-\r
- if (lastdot != NULL) {\r
- // and it's before the extenstion separator.\r
-\r
- if (lastsep != NULL) {\r
- if (lastsep < lastdot) {\r
- // then remove it.\r
-\r
- *lastdot = '\0';\r
- }\r
- } else {\r
- // Has extension separator with no path separator.\r
-\r
- *lastdot = '\0';\r
- }\r
- }\r
-\r
- // Return the modified string.\r
-\r
- return retstr;\r
-}\r