]> git.sur5r.net Git - cc65/commitdiff
Check for duplicate files in an argument list and print a warning
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 25 Jun 2000 14:08:36 +0000 (14:08 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sun, 25 Jun 2000 14:08:36 +0000 (14:08 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@129 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/cl65/main.c

index a0cac2250616f4f224be5f2095bce00150cc31ff..a62d461ec7eeb8e267b7bf44a07a44c3701f259b 100644 (file)
@@ -250,10 +250,26 @@ static void CmdAddFile (CmdDesc* Cmd, const char* File)
        Cmd->FileMax = NewMax;
     }
 
-    /* Add a copy of the file name, allow a NULL pointer */
+    /* If the file name is not NULL (which is legal and is used to terminate
+     * the file list), check if the file name does already exist in the file
+     * list and print a warning if so. Regardless of the search result, add
+     * the file.
+     */
     if (File) {
+       unsigned I;
+       for (I = 0; I < Cmd->FileCount; ++I) {
+           if (strcmp (Cmd->Files[I], File) == 0) {
+               /* Duplicate file */
+               Warning ("Duplicate file in argument list: `%s'", File);
+               /* No need to search further */
+               break;
+           }
+       }
+
+       /* Add the file */
        Cmd->Files [Cmd->FileCount++] = xstrdup (File);
     } else {
+       /* Add a NULL pointer */
        Cmd->Files [Cmd->FileCount++] = 0;
     }
 }