| 4 * |
4 * |
| 5 * Created by: Robert French |
5 * Created by: Robert French |
| 6 * |
6 * |
| 7 * Copyright (c) 1987 by the Massachusetts Institute of Technology. |
7 * Copyright (c) 1987 by the Massachusetts Institute of Technology. |
| 8 * For copying and distribution information, see the file |
8 * For copying and distribution information, see the file |
| 9 * "mit-copyright.h". |
9 * "mit-copyright.h". |
| 10 */ |
10 */ |
| 11 |
11 |
| 12 #include "libpurple/internal.h" |
12 #include "libpurple/internal.h" |
| 13 #include "internal.h" |
13 #include "internal.h" |
| 14 #include "util.h" |
14 #include "util.h" |
| 53 int written; |
53 int written; |
| 54 FILE *fpin, *fpout; |
54 FILE *fpin, *fpout; |
| 55 char *varfile, *varfilebackup, varbfr[512]; |
55 char *varfile, *varfilebackup, varbfr[512]; |
| 56 |
56 |
| 57 written = 0; |
57 written = 0; |
| 58 |
58 |
| 59 if ((varfile = get_localvarfile()) == NULL) |
59 if ((varfile = get_localvarfile()) == NULL) |
| 60 return (ZERR_INTERNAL); |
60 return (ZERR_INTERNAL); |
| 61 |
61 |
| 62 varfilebackup = g_strconcat(varfile, ".backup", NULL); |
62 varfilebackup = g_strconcat(varfile, ".backup", NULL); |
| 63 |
63 |
| 64 if (!(fpout = fopen(varfilebackup, "w"))) { |
64 if (!(fpout = fopen(varfilebackup, "w"))) { |
| 65 g_free(varfile); |
65 g_free(varfile); |
| 66 g_free(varfilebackup); |
66 g_free(varfilebackup); |
| 67 return (errno); |
67 return (errno); |
| 68 } |
68 } |
| 76 } |
76 } |
| 77 else |
77 else |
| 78 fprintf(fpout, "%s\n", varbfr); |
78 fprintf(fpout, "%s\n", varbfr); |
| 79 } |
79 } |
| 80 (void) fclose(fpin); /* don't care about errs on input */ |
80 (void) fclose(fpin); /* don't care about errs on input */ |
| 81 } |
81 } |
| 82 if (!written) |
82 if (!written) |
| 83 fprintf(fpout, "%s = %s\n", var, value); |
83 fprintf(fpout, "%s = %s\n", var, value); |
| 84 if (fclose(fpout) == EOF) { |
84 if (fclose(fpout) == EOF) { |
| 85 g_free(varfilebackup); |
85 g_free(varfilebackup); |
| 86 g_free(varfile); |
86 g_free(varfile); |
| 104 |
104 |
| 105 if ((varfile = get_localvarfile()) == NULL) |
105 if ((varfile = get_localvarfile()) == NULL) |
| 106 return (ZERR_INTERNAL); |
106 return (ZERR_INTERNAL); |
| 107 |
107 |
| 108 varfilebackup = g_strconcat(varfile, ".backup", NULL); |
108 varfilebackup = g_strconcat(varfile, ".backup", NULL); |
| 109 |
109 |
| 110 if (!(fpout = fopen(varfilebackup, "w"))) { |
110 if (!(fpout = fopen(varfilebackup, "w"))) { |
| 111 g_free(varfile); |
111 g_free(varfile); |
| 112 g_free(varfilebackup); |
112 g_free(varfilebackup); |
| 113 return (errno); |
113 return (errno); |
| 114 } |
114 } |
| 118 varbfr[strlen(varbfr)-1] = '\0'; |
118 varbfr[strlen(varbfr)-1] = '\0'; |
| 119 if (!varline(varbfr, var)) |
119 if (!varline(varbfr, var)) |
| 120 fprintf(fpout, "%s\n", varbfr); |
120 fprintf(fpout, "%s\n", varbfr); |
| 121 } |
121 } |
| 122 (void) fclose(fpin); /* don't care about read close errs */ |
122 (void) fclose(fpin); /* don't care about read close errs */ |
| 123 } |
123 } |
| 124 if (fclose(fpout) == EOF) { |
124 if (fclose(fpout) == EOF) { |
| 125 g_free(varfilebackup); |
125 g_free(varfilebackup); |
| 126 g_free(varfile); |
126 g_free(varfile); |
| 127 return(EIO); /* errno isn't reliable */ |
127 return(EIO); /* errno isn't reliable */ |
| 128 } |
128 } |
| 158 base = pwd->pw_dir; |
158 base = pwd->pw_dir; |
| 159 #endif |
159 #endif |
| 160 } |
160 } |
| 161 |
161 |
| 162 return g_strconcat(base, "/.zephyr.vars", NULL); |
162 return g_strconcat(base, "/.zephyr.vars", NULL); |
| 163 } |
163 } |
| 164 |
164 |
| 165 static char *get_varval(fn, var) |
165 static char *get_varval(fn, var) |
| 166 char *fn; |
166 char *fn; |
| 167 char *var; |
167 char *var; |
| 168 { |
168 { |
| 169 FILE *fp; |
169 FILE *fp; |
| 170 static char varbfr[512]; |
170 static char varbfr[512]; |
| 171 int i; |
171 int i; |
| 172 |
172 |
| 173 fp = fopen(fn, "r"); |
173 fp = fopen(fn, "r"); |
| 174 if (!fp) |
174 if (!fp) |
| 175 return ((char *)0); |
175 return ((char *)0); |
| 176 |
176 |
| 177 while (fgets(varbfr, sizeof varbfr, fp) != (char *) 0) { |
177 while (fgets(varbfr, sizeof varbfr, fp) != (char *) 0) { |