/* Name of the library file */
const char* LibName = 0;
+static char* NewLibName = 0;
/* File descriptor for the library file */
-FILE* NewLib = 0;
static FILE* Lib = 0;
+static FILE* NewLib = 0;
/* The library header */
static LibHeader Header = {
}
if (NeedTemp) {
+
+ /* Create the temporary library name */
+ NewLibName = xmalloc (strlen (Name) + strlen (".temp") + 1);
+ strcpy (NewLibName, Name);
+ strcat (NewLibName, ".temp");
+
/* Create the temporary library */
- NewLib = tmpfile ();
+ NewLib = fopen (NewLibName, "w+b");
if (NewLib == 0) {
- Error ("Cannot create temporary file: %s", strerror (errno));
+ Error ("Cannot create temporary library file: %s", strerror (errno));
}
/* Write a dummy header to the temp file */
LibName, strerror (errno));
}
- /* Copy the new library to the new one */
+ /* Copy the temporary library to the new one */
fseek (NewLib, 0, SEEK_SET);
while ((Count = fread (Buf, 1, sizeof (Buf), NewLib)) != 0) {
if (fwrite (Buf, 1, Count, Lib) != Count) {
if (NewLib && fclose (NewLib) != 0) {
Error ("Problem closing temporary library file: %s", strerror (errno));
}
+ if (NewLibName && remove (NewLibName) != 0) {
+ Error ("Problem deleting temporary library file: %s", strerror (errno));
+ }
}