]> git.sur5r.net Git - cc65/commitdiff
Just renames
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Wed, 14 Jun 2000 10:03:59 +0000 (10:03 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Wed, 14 Jun 2000 10:03:59 +0000 (10:03 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@78 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/common/fname.c
src/common/fname.h

index fd907e82dfebdaf85fc57d7c8a3fe5eb805eb3a3..49f3ed4d206a1ff921e438a7201f5555d119fad9 100644 (file)
 
 
 
+const char* FindExt (const char* Name)
+/* Return a pointer to the file extension in Name or NULL if there is none */
+{
+    const char* S;
+
+    /* Get the length of the name */
+    unsigned Len = strlen (Name);
+    if (Len < 2) {
+       return 0;
+    }
+
+    /* Get a pointer to the last character */
+    S = Name + Len - 1;
+
+    /* Search for the dot, beware of subdirectories */
+    while (S >= Name && *S != '.' && *S != '\\' && *S != '/') {
+       --S;
+    }
+
+    /* Did we find an extension? */
+    if (*S == '.') {
+       return S;
+    } else {
+       return 0;
+    }
+}
+
+
+
 char* MakeFilename (const char* Origin, const char* Ext)
 /* Make a new file name from Origin and Ext. If Origin has an extension, it
  * is removed and Ext is appended. If Origin has no extension, Ext is simply
@@ -53,20 +82,19 @@ char* MakeFilename (const char* Origin, const char* Ext)
  * The function may be used to create "foo.o" from "foo.s".
  */
 {
-    /* Construct the name */
-    char* Result;
-    const char* P = strrchr (Origin, '.');
+    char* Out;
+    const char* P = FindExt (Origin);
     if (P == 0) {
-       /* No dot, add the extension */
-       Result = xmalloc (strlen (Origin) + strlen (Ext) + 1);
-       strcpy (Result, Origin);
-       strcat (Result, Ext);
+       /* No dot, add the extension */
+       Out = xmalloc (strlen (Origin) + strlen (Ext) + 1);
+       strcpy (Out, Origin);
+       strcat (Out, Ext);
     } else {
-       Result = xmalloc (P - Origin + strlen (Ext) + 1);
-       memcpy (Result, Origin, P - Origin);
-       strcpy (Result + (P - Origin), Ext);
+       Out = xmalloc (P - Origin + strlen (Ext) + 1);
+       memcpy (Out, Origin, P - Origin);
+       strcpy (Out + (P - Origin), Ext);
     }
-    return Result;
+    return Out;
 }
 
 
index 671bf80432e014389a73b56f2967ddcc4fb8534c..de54bca3e5a1ca69a0ddca61492d38c3aa76b0fa 100644 (file)
@@ -44,6 +44,9 @@
 
 
 
+const char* FindExt (const char* Name);
+/* Return a pointer to the file extension in Name or NULL if there is none */
+
 char* MakeFilename (const char* Origin, const char* Ext);
 /* Make a new file name from Origin and Ext. If Origin has an extension, it
  * is removed and Ext is appended. If Origin has no extension, Ext is simply