]> andersk Git - splint.git/blobdiff - src/osd.c
Fixed some /@*i@*/ comments in the code.
[splint.git] / src / osd.c
index 938db1332f91f0849031e0341a85069ffe506c17..24dcbf4d835eb30ceb8cf9c90f7a0a0d958eccb0 100644 (file)
--- a/src/osd.c
+++ b/src/osd.c
@@ -1,6 +1,6 @@
 /*
 ** Splint - annotation-assisted static program checker
-** Copyright (C) 1994-2002 University of Virginia,
+** Copyright (C) 1994-2003 University of Virginia,
 **         Massachusetts Institute of Technology
 **
 ** This program is free software; you can redistribute it and/or modify it
@@ -868,6 +868,7 @@ static void osd_setWorkingDirectory (void)
     {
       lldiagmsg (message ("Cannot get working directory: %s\n",
                          lldecodeerror (errno)));
+      osd_cwd = cstring_makeLiteral ("<missing directory>");
     }
   else
     {
@@ -903,7 +904,7 @@ cstring osd_absolutePath (cstring cwd, cstring filename)
   llassert (cstring_isDefined (cwd2));
   llassert (cstring_isDefined (filename));
 
-  abs_buffer = (char *) dmalloc (size_fromInt (cstring_length (cwd2) + cstring_length (filename) + 2));
+  abs_buffer = (char *) dmalloc (cstring_length (cwd2) + cstring_length (filename) + 2);
   endp = abs_buffer;
   
   /*
@@ -1053,6 +1054,12 @@ cstring osd_outputPath (cstring filename)
   rel_buf_p = rel_buffer;
   *rel_buf_p = '\0';
 
+  if (cwd_p == NULL) 
+    {
+      /* Need to prevent recursive assertion failures */
+      return cstring_copy (filename);
+    }
+
   llassert (cwd_p != NULL);
   llassert (path_p != NULL);
 
@@ -1078,11 +1085,16 @@ cstring osd_outputPath (cstring filename)
     }
   else
     {
+
+      /* drl   2002-10/14 I had to put this code back*/
+      /* the case that needs it is when splint is given an absolute path name of a file outside of the current directory and the subdirectories below the current directory. e.g. cd /home/; splint /tmp/prog.c
+       */
+      
       /* evans 2002-02-05 This is horrible code, which I've removed.  I couldn't find any
       ** test cases that need it, so I hope I'm not breaking anything.
       */
+      /*#if 0*/
 
-# if 0      
       if (*path_p != '\0')
         {
           --cwd_p;
@@ -1100,7 +1112,7 @@ cstring osd_outputPath (cstring filename)
 
       /* Find out how many directory levels in cwd were *not* matched.  */
       while (*cwd_p != '\0')
-       {s
+       {
          if (osd_isConnectChar (*cwd_p++))
            unmatched_slash_count++;
        }
@@ -1113,8 +1125,9 @@ cstring osd_outputPath (cstring filename)
          /* fprintf (stderr, "Returning filename: %s [%p]\n", filename); */
          return cstring_copy (filename);
        }
-# endif
-      
+
+      /*drl 10-14-2002 end previously removed code */
+      /*#endif*/
       /* For each of them, put a `../' at the beginning of the short name.  */
       while (unmatched_slash_count-- > 0)
         {
This page took 0.03285 seconds and 4 git commands to generate.