summaryrefslogtreecommitdiff
blob: 7d2efb63f33c5c4cf337295edc31fec5a7bb4ee3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
diff -ur vorbisgain-0.37.orig/misc.c vorbisgain-0.37/misc.c
--- vorbisgain-0.37.orig/misc.c	2004-01-03 23:17:28.000000000 +0200
+++ vorbisgain-0.37/misc.c	2008-03-22 09:32:49.000000000 +0200
@@ -23,6 +23,7 @@
 #else /* WIN32 */
 #include <errno.h>
 #include <ctype.h>
+#include <unistd.h>
 
 #ifndef DISABLE_WINSIZE
 
diff -ur vorbisgain-0.37.orig/recurse.c vorbisgain-0.37/recurse.c
--- vorbisgain-0.37.orig/recurse.c	2004-01-02 14:49:38.000000000 +0200
+++ vorbisgain-0.37/recurse.c	2008-03-22 09:31:52.000000000 +0200
@@ -377,6 +377,7 @@
 
         if (result->dir != NULL)
         {
+            errno = 0;
             result->entry = readdir(result->dir);
 
             if (result->entry != NULL)
@@ -408,6 +409,7 @@
  */
 static int read_dir(DIRECTORY *directory)
 {
+    errno = 0;
     directory->entry = readdir(directory->dir);
 
     if (directory->entry != NULL)
diff -ur vorbisgain-0.37.orig/vorbis.c vorbisgain-0.37/vorbis.c
--- vorbisgain-0.37.orig/vorbis.c	2005-07-15 01:49:05.000000000 +0300
+++ vorbisgain-0.37/vorbis.c	2008-03-22 09:32:25.000000000 +0200
@@ -572,6 +572,9 @@
     int result = -1;
     int delete_temp = 0;
     int i;
+#if _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500
+    int fd;
+#endif
 
     infile = fopen(filename, "rb");
 
@@ -699,6 +702,16 @@
     strcpy(temp_name, filename);
     strcpy((char *) last_path(temp_name), TEMP_NAME);
 
+#if _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500
+    fd = mkstemp(temp_name);
+    if (fd == -1)
+    {
+        fprintf(stderr, _("Couldn't create temporary file for processing.\n"));
+        goto exit;
+    }
+
+    outfile = fdopen(fd, "wb");
+#else /* #if _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500 */
 #ifdef WIN32
     temp_name = _mktemp(temp_name);
 #else
@@ -712,6 +725,7 @@
     }
     
     outfile = fopen(temp_name, "wb");
+#endif /* #if _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 500 */
 
     if (outfile == NULL)
     {
@@ -824,7 +838,10 @@
         }
     }
 
-    free(temp_name);
+    if (temp_name != NULL)
+    {
+        free(temp_name);
+    }
 
     return result;
 }