]> git.gag.com Git - fw/sdcc/commitdiff
Generate correct file offsets for Unix/Linux and Windows/DOS
authorjesusc <jesusc@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Wed, 17 Sep 2003 21:45:01 +0000 (21:45 +0000)
committerjesusc <jesusc@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Wed, 17 Sep 2003 21:45:01 +0000 (21:45 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@2895 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
support/librarian/sdcclib.c

index 91fa0b018e538f41600ef43b12b96df309e575bb..bffa8bb4d9f7e2862511d1177dc9c73070ffecb8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2003-07-06  Jesus Calvino-Fraga <jesusc@ece.ubc.ca>
+
+    * support/librarian/sdcclib.c: Generate correct offsets for libraries with
+    Unix (/n) and DOS (/r/n) line terminations.
+
 2003-09-17  Erik Petrich <epetrich@ivorytower.norman.ok.us>
 
        * src/SDCCopt.c (cnvFromFloatCast, cnvToFloatCast): fixed
index 1d77bc895ab3289d5d0c89b26c11f76f33694cd6..7598431fa4f4b52f35d18dec83af208fb480fdc2 100644 (file)
@@ -188,6 +188,7 @@ void AddRel(void)
     long newlibpos, indexsize;
     char symname[MAXLINE+1];
     char c;
+    int IsDOSStyle=0;
 
     strcpy(LibNameTmp, LibName);
     ChangeExtension(LibNameTmp, "__L");
@@ -332,10 +333,17 @@ void AddRel(void)
     lib=fopen(LibName, "w");
     libindex=fopen(IndexName, "r");
 
-    fprintf(lib, "<SDCCLIB>\n\n");
-    fprintf(lib, "<INDEX>\n");
+    fprintf(lib, "<SDCCLIB>\n\n<INDEX>\n");
+
+    /*Find out if the \n is expanded to \r\n or not*/
+    if(ftell(lib)!=(long)strlen("<SDCCLIB>\n\n<INDEX>\n"))
+    {
+        IsDOSStyle=1;
+    }
+
+    indexsize+=ftell(lib)+strlen("0123456789\n\n</INDEX>\n\n");
+    if(IsDOSStyle) indexsize+=4;
 
-    indexsize+=ftell(lib)+12+14;
     fprintf(lib, "%10ld\n", indexsize);
 
     while(!feof(libindex))