libpurple/protocols/zephyr/ZVariables.c

Sun, 21 Jun 2020 04:16:15 -0500

author
Gary Kramlich <grim@reaperworld.com>
date
Sun, 21 Jun 2020 04:16:15 -0500
changeset 40474
1341be8e3402
parent 40439
e9838d634d5e
permissions
-rw-r--r--

Make it so only libpurple can directly include libpurple header files.

This is part of our on going effort to make it easier to develop against libpurple as well as making our filenames not part of our api.

Make it so only libpurple can directly include libpurple header files.

Testing Done:
Just a normal compile to make sure everything builds again.

Reviewed at https://reviews.imfreedom.org/r/8/

2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1 /* This file is part of the Project Athena Zephyr Notification System.
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2 * It contains source for the ZGetVariable, ZSetVariable, and ZUnsetVariable
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3 * functions.
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5 * Created by: Robert French
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7 * Copyright (c) 1987 by the Massachusetts Institute of Technology.
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
8 * For copying and distribution information, see the file
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30617
diff changeset
9 * "mit-copyright.h".
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
10 */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
11
40439
e9838d634d5e Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents: 40166
diff changeset
12 #include <glib.h>
e9838d634d5e Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents: 40166
diff changeset
13 #include <glib/gstdio.h>
e9838d634d5e Make sure that internal.h can only be included by libpurple and split out some pieces to purpleprivate.h
Gary Kramlich <grim@reaperworld.com>
parents: 40166
diff changeset
14
8792
b0645c9dc276 [gaim-migrate @ 9554]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
15 #include "internal.h"
40474
1341be8e3402 Make it so only libpurple can directly include libpurple header files.
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
16
1341be8e3402 Make it so only libpurple can directly include libpurple header files.
Gary Kramlich <grim@reaperworld.com>
parents: 40439
diff changeset
17 #include <purple.h>
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
18
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
19 #include <ctype.h>
10867
b39f9b646d6c [gaim-migrate @ 12553]
Arun Tharuvai <aatharuv@mit.edu>
parents: 10772
diff changeset
20 #ifndef WIN32
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
21 #include <pwd.h>
10867
b39f9b646d6c [gaim-migrate @ 12553]
Arun Tharuvai <aatharuv@mit.edu>
parents: 10772
diff changeset
22 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
23
39829
ce056c64e426 zephyr: Remove support for compilers without __STDC__.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39828
diff changeset
24 static char *get_localvarfile(void);
39831
c7e0d1617aae zephyr: Fix const-ness of variable loading.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39829
diff changeset
25 static const gchar *get_varval(const gchar *fn, const gchar *val);
c7e0d1617aae zephyr: Fix const-ness of variable loading.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39829
diff changeset
26 static int varline(const gchar *bfr, const gchar *var);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
27
39831
c7e0d1617aae zephyr: Fix const-ness of variable loading.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39829
diff changeset
28 const gchar *
c7e0d1617aae zephyr: Fix const-ness of variable loading.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39829
diff changeset
29 ZGetVariable(const gchar *var)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
30 {
39831
c7e0d1617aae zephyr: Fix const-ness of variable loading.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39829
diff changeset
31 gchar *varfile;
c7e0d1617aae zephyr: Fix const-ness of variable loading.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39829
diff changeset
32 const gchar *ret;
28001
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
33
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
34 if ((varfile = get_localvarfile()) == NULL)
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
35 return ((char *)0);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
36
30617
d79eaf981448 Fix a minor memleak on initialization
Mark Doliner <markdoliner@pidgin.im>
parents: 28001
diff changeset
37 ret = get_varval(varfile, var);
d79eaf981448 Fix a minor memleak on initialization
Mark Doliner <markdoliner@pidgin.im>
parents: 28001
diff changeset
38 g_free(varfile);
d79eaf981448 Fix a minor memleak on initialization
Mark Doliner <markdoliner@pidgin.im>
parents: 28001
diff changeset
39 if (ret != ZERR_NONE)
28001
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
40 return ret;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
41
35851
53a60c0d3040 cross-win32: tidy remaining macros - SSL_CERTIFICATES_DIR, BUILDDIR, CONFDIR
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34304
diff changeset
42 #ifdef _WIN32
28001
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
43 varfile = g_strdup("C:\\zephyr\\zephyr.var");
10867
b39f9b646d6c [gaim-migrate @ 12553]
Arun Tharuvai <aatharuv@mit.edu>
parents: 10772
diff changeset
44 #else
35851
53a60c0d3040 cross-win32: tidy remaining macros - SSL_CERTIFICATES_DIR, BUILDDIR, CONFDIR
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34304
diff changeset
45 varfile = g_build_filename(PURPLE_SYSCONFDIR, "zephyr.vars", NULL);
10867
b39f9b646d6c [gaim-migrate @ 12553]
Arun Tharuvai <aatharuv@mit.edu>
parents: 10772
diff changeset
46 #endif
28001
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
47 ret = get_varval(varfile, var);
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
48 g_free(varfile);
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
49
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
50 return ret;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
51 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
52
40166
811f82db29dd zephyr: Modernize K&R function prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
53 Code_t
811f82db29dd zephyr: Modernize K&R function prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
54 ZSetVariable(char *var, char *value)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
55 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
56 int written;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
57 FILE *fpin, *fpout;
28001
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
58 char *varfile, *varfilebackup, varbfr[512];
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
59
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
60 written = 0;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30617
diff changeset
61
28001
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
62 if ((varfile = get_localvarfile()) == NULL)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
63 return (ZERR_INTERNAL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
64
28001
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
65 varfilebackup = g_strconcat(varfile, ".backup", NULL);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30617
diff changeset
66
28001
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
67 if (!(fpout = fopen(varfilebackup, "w"))) {
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
68 g_free(varfile);
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
69 g_free(varfilebackup);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
70 return (errno);
28001
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
71 }
10592
cd4c3a7d7bdf [gaim-migrate @ 11998]
Daniel Atallah <datallah@pidgin.im>
parents: 10589
diff changeset
72 if ((fpin = fopen(varfile, "r")) != NULL) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
73 while (fgets(varbfr, sizeof varbfr, fpin) != (char *) 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
74 if (varbfr[strlen(varbfr)-1] < ' ')
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
75 varbfr[strlen(varbfr)-1] = '\0';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
76 if (varline(varbfr, var)) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
77 fprintf(fpout, "%s = %s\n", var, value);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
78 written = 1;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
79 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
80 else
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
81 fprintf(fpout, "%s\n", varbfr);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
82 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
83 (void) fclose(fpin); /* don't care about errs on input */
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30617
diff changeset
84 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
85 if (!written)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
86 fprintf(fpout, "%s = %s\n", var, value);
28001
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
87 if (fclose(fpout) == EOF) {
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
88 g_free(varfilebackup);
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
89 g_free(varfile);
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
90 return(EIO); /* can't rely on errno */
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
91 }
40093
dd7183cf0a71 Use g_rename directly instead of rename.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39832
diff changeset
92 if (g_rename(varfilebackup, varfile)) {
28001
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
93 g_free(varfilebackup);
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
94 g_free(varfile);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
95 return (errno);
28001
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
96 }
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
97 g_free(varfilebackup);
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
98 g_free(varfile);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
99 return (ZERR_NONE);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30617
diff changeset
100 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
101
40166
811f82db29dd zephyr: Modernize K&R function prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
102 Code_t
811f82db29dd zephyr: Modernize K&R function prototypes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40093
diff changeset
103 ZUnsetVariable(char *var)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
104 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
105 FILE *fpin, *fpout;
28001
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
106 char *varfile, *varfilebackup, varbfr[512];
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
107
28001
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
108 if ((varfile = get_localvarfile()) == NULL)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
109 return (ZERR_INTERNAL);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
110
28001
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
111 varfilebackup = g_strconcat(varfile, ".backup", NULL);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30617
diff changeset
112
28001
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
113 if (!(fpout = fopen(varfilebackup, "w"))) {
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
114 g_free(varfile);
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
115 g_free(varfilebackup);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
116 return (errno);
28001
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
117 }
10592
cd4c3a7d7bdf [gaim-migrate @ 11998]
Daniel Atallah <datallah@pidgin.im>
parents: 10589
diff changeset
118 if ((fpin = fopen(varfile, "r")) != NULL) {
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
119 while (fgets(varbfr, sizeof varbfr, fpin) != (char *) 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
120 if (varbfr[strlen(varbfr)-1] < ' ')
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
121 varbfr[strlen(varbfr)-1] = '\0';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
122 if (!varline(varbfr, var))
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
123 fprintf(fpout, "%s\n", varbfr);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
124 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
125 (void) fclose(fpin); /* don't care about read close errs */
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30617
diff changeset
126 }
28001
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
127 if (fclose(fpout) == EOF) {
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
128 g_free(varfilebackup);
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
129 g_free(varfile);
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
130 return(EIO); /* errno isn't reliable */
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
131 }
40093
dd7183cf0a71 Use g_rename directly instead of rename.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39832
diff changeset
132 if (g_rename(varfilebackup, varfile)) {
28001
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
133 g_free(varfilebackup);
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
134 g_free(varfile);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
135 return (errno);
28001
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
136 }
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
137 g_free(varfilebackup);
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
138 g_free(varfile);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
139 return (ZERR_NONE);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30617
diff changeset
140 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
141
28001
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
142 static char *get_localvarfile(void)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
143 {
28001
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
144 const char *base;
10867
b39f9b646d6c [gaim-migrate @ 12553]
Arun Tharuvai <aatharuv@mit.edu>
parents: 10772
diff changeset
145 #ifndef WIN32
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
146 struct passwd *pwd;
28001
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
147 base = purple_home_dir();
10867
b39f9b646d6c [gaim-migrate @ 12553]
Arun Tharuvai <aatharuv@mit.edu>
parents: 10772
diff changeset
148 #else
28001
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
149 base = getenv("HOME");
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
150 if (!base)
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
151 base = getenv("HOMEPATH");
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30617
diff changeset
152 if (!base)
28001
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
153 base = "C:\\";
10867
b39f9b646d6c [gaim-migrate @ 12553]
Arun Tharuvai <aatharuv@mit.edu>
parents: 10772
diff changeset
154 #endif
28001
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
155 if (!base) {
10867
b39f9b646d6c [gaim-migrate @ 12553]
Arun Tharuvai <aatharuv@mit.edu>
parents: 10772
diff changeset
156 #ifndef WIN32
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
157 if (!(pwd = getpwuid((int) getuid()))) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
158 fprintf(stderr, "Zephyr internal failure: Can't find your entry in /etc/passwd\n");
28001
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
159 return NULL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
160 }
28001
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
161 base = pwd->pw_dir;
10867
b39f9b646d6c [gaim-migrate @ 12553]
Arun Tharuvai <aatharuv@mit.edu>
parents: 10772
diff changeset
162 #endif
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
163 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
164
28001
c6446d1742d3 Don't use a static buffer to hold a full filename, since it could possibly
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26726
diff changeset
165 return g_strconcat(base, "/.zephyr.vars", NULL);
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30617
diff changeset
166 }
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30617
diff changeset
167
39831
c7e0d1617aae zephyr: Fix const-ness of variable loading.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39829
diff changeset
168 static const gchar *
c7e0d1617aae zephyr: Fix const-ness of variable loading.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39829
diff changeset
169 get_varval(const gchar *fn, const gchar *var)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
170 {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
171 FILE *fp;
39831
c7e0d1617aae zephyr: Fix const-ness of variable loading.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39829
diff changeset
172 static gchar varbfr[512];
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
173 int i;
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30617
diff changeset
174
10592
cd4c3a7d7bdf [gaim-migrate @ 11998]
Daniel Atallah <datallah@pidgin.im>
parents: 10589
diff changeset
175 fp = fopen(fn, "r");
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
176 if (!fp)
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
177 return ((char *)0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
178
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
179 while (fgets(varbfr, sizeof varbfr, fp) != (char *) 0) {
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
180 if (varbfr[strlen(varbfr)-1] < ' ')
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
181 varbfr[strlen(varbfr)-1] = '\0';
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
182 if (!(i = varline(varbfr, var)))
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
183 continue;
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
184 (void) fclose(fp); /* open read-only, don't care */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
185 return (varbfr+i);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
186 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
187 (void) fclose(fp); /* open read-only, don't care */
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
188 return ((char *)0);
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
189 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
190
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
191 /* If the variable in the line bfr[] is the same as var, return index to
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
192 the variable value, else return 0. */
39831
c7e0d1617aae zephyr: Fix const-ness of variable loading.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39829
diff changeset
193 static int
c7e0d1617aae zephyr: Fix const-ness of variable loading.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39829
diff changeset
194 varline(const gchar *bfr, const gchar *var)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
195 {
39831
c7e0d1617aae zephyr: Fix const-ness of variable loading.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39829
diff changeset
196 register const gchar *cp;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
197
39832
df2dff0f1359 Fix misleading indentation warnings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39831
diff changeset
198 if (!bfr[0] || bfr[0] == '#') {
df2dff0f1359 Fix misleading indentation warnings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39831
diff changeset
199 /* comment or null line */
df2dff0f1359 Fix misleading indentation warnings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39831
diff changeset
200 return (0);
df2dff0f1359 Fix misleading indentation warnings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39831
diff changeset
201 }
31294
73607ab89c6f Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents: 30617
diff changeset
202
39832
df2dff0f1359 Fix misleading indentation warnings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39831
diff changeset
203 cp = bfr;
df2dff0f1359 Fix misleading indentation warnings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39831
diff changeset
204 while (*cp && !isspace(*cp) && (*cp != '=')) {
df2dff0f1359 Fix misleading indentation warnings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39831
diff changeset
205 cp++;
df2dff0f1359 Fix misleading indentation warnings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39831
diff changeset
206 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
207
39828
7372deed606c zephyr: Use GLib's min/max macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35851
diff changeset
208 if (g_ascii_strncasecmp(bfr, var, MAX(strlen(var), (gsize)(cp - bfr)))) {
7372deed606c zephyr: Use GLib's min/max macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35851
diff changeset
209 /* var is not the var in bfr ==> no match */
7372deed606c zephyr: Use GLib's min/max macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35851
diff changeset
210 return 0;
7372deed606c zephyr: Use GLib's min/max macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 35851
diff changeset
211 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
212
39832
df2dff0f1359 Fix misleading indentation warnings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39831
diff changeset
213 cp = strchr(bfr, '=');
df2dff0f1359 Fix misleading indentation warnings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39831
diff changeset
214 if (!cp) {
df2dff0f1359 Fix misleading indentation warnings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39831
diff changeset
215 return (0);
df2dff0f1359 Fix misleading indentation warnings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39831
diff changeset
216 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
217 cp++;
39832
df2dff0f1359 Fix misleading indentation warnings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39831
diff changeset
218 while (*cp && isspace(*cp)) {
df2dff0f1359 Fix misleading indentation warnings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39831
diff changeset
219 /* space up to variable value */
df2dff0f1359 Fix misleading indentation warnings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39831
diff changeset
220 cp++;
df2dff0f1359 Fix misleading indentation warnings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39831
diff changeset
221 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
222
39832
df2dff0f1359 Fix misleading indentation warnings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 39831
diff changeset
223 return (cp - bfr); /* return index */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
224 }

mercurial