Mon, 22 Aug 2022 21:40:04 -0500
Inline pidgin_make_scrollable
We need to change it for GTK4, and there are few enough that it can be inlined. Eventually, that code might be a `.ui` anyway.
Testing Done:
Compile only.
Reviewed at https://reviews.imfreedom.org/r/1615/
| 2086 | 1 | /* This file is part of the Project Athena Zephyr Notification System. |
| 2 | * It contains source for the ZGetVariable, ZSetVariable, and ZUnsetVariable | |
| 3 | * functions. | |
| 4 | * | |
| 5 | * Created by: Robert French | |
| 6 | * | |
| 7 | * Copyright (c) 1987 by the Massachusetts Institute of Technology. | |
| 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 | 10 | */ |
| 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 | 18 | |
| 19 | #include <ctype.h> | |
| 10867 | 20 | #ifndef WIN32 |
| 2086 | 21 | #include <pwd.h> |
| 10867 | 22 | #endif |
| 2086 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 51 | } |
| 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 | 55 | { |
| 56 | int written; | |
| 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 | 59 | |
| 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 | 63 | return (ZERR_INTERNAL); |
| 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 | 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 | 73 | while (fgets(varbfr, sizeof varbfr, fpin) != (char *) 0) { |
| 74 | if (varbfr[strlen(varbfr)-1] < ' ') | |
| 75 | varbfr[strlen(varbfr)-1] = '\0'; | |
| 76 | if (varline(varbfr, var)) { | |
| 77 | fprintf(fpout, "%s = %s\n", var, value); | |
| 78 | written = 1; | |
| 79 | } | |
| 80 | else | |
| 81 | fprintf(fpout, "%s\n", varbfr); | |
| 82 | } | |
| 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 | 85 | if (!written) |
| 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 | 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 | 99 | return (ZERR_NONE); |
|
31294
73607ab89c6f
Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents:
30617
diff
changeset
|
100 | } |
| 2086 | 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 | 104 | { |
| 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 | 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 | 109 | return (ZERR_INTERNAL); |
| 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 | 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 | 119 | while (fgets(varbfr, sizeof varbfr, fpin) != (char *) 0) { |
| 120 | if (varbfr[strlen(varbfr)-1] < ' ') | |
| 121 | varbfr[strlen(varbfr)-1] = '\0'; | |
| 122 | if (!varline(varbfr, var)) | |
| 123 | fprintf(fpout, "%s\n", varbfr); | |
| 124 | } | |
| 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 | 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 | 139 | return (ZERR_NONE); |
|
31294
73607ab89c6f
Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents:
30617
diff
changeset
|
140 | } |
| 2086 | 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 | 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 | 145 | #ifndef WIN32 |
| 2086 | 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 | 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 | 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 | 156 | #ifndef WIN32 |
| 2086 | 157 | if (!(pwd = getpwuid((int) getuid()))) { |
| 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 | 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 | 162 | #endif |
| 2086 | 163 | } |
| 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 | 170 | { |
| 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 | 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 | 176 | if (!fp) |
| 177 | return ((char *)0); | |
| 178 | ||
| 179 | while (fgets(varbfr, sizeof varbfr, fp) != (char *) 0) { | |
| 180 | if (varbfr[strlen(varbfr)-1] < ' ') | |
| 181 | varbfr[strlen(varbfr)-1] = '\0'; | |
| 182 | if (!(i = varline(varbfr, var))) | |
| 183 | continue; | |
| 184 | (void) fclose(fp); /* open read-only, don't care */ | |
| 185 | return (varbfr+i); | |
| 186 | } | |
| 187 | (void) fclose(fp); /* open read-only, don't care */ | |
| 188 | return ((char *)0); | |
| 189 | } | |
| 190 | ||
| 191 | /* If the variable in the line bfr[] is the same as var, return index to | |
| 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 | 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 | 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 | 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 | 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 | 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 | 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 | 224 | } |