annotate gui/util/string.c @ 34685:311b47301ea7

Remove gstrcasecmp(). This function isn't necessary. strcasecmp() can be used just as well, because both arguments to the gstrcasecmp() calls have been checked to be not NULL prior to the call.
author ib
date Fri, 24 Feb 2012 17:26:35 +0000
parents 531c69f090da
children 1edb306bc754
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
33048
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
1 /*
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
2 * This file is part of MPlayer.
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
3 *
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
4 * MPlayer is free software; you can redistribute it and/or modify
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
5 * it under the terms of the GNU General Public License as published by
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
6 * the Free Software Foundation; either version 2 of the License, or
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
7 * (at your option) any later version.
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
8 *
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
9 * MPlayer is distributed in the hope that it will be useful,
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
12 * GNU General Public License for more details.
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
13 *
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
14 * You should have received a copy of the GNU General Public License along
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
15 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
17 */
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
18
33740
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
19 #include <stdlib.h>
33737
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
20 #include <string.h>
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
21
33048
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
22 #include "string.h"
34175
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
23 #include "gui/interface.h"
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
24
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
25 #include "config.h"
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
26 #include "help_mp.h"
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
27 #include "libavutil/avstring.h"
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
28 #include "stream/stream.h"
33048
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
29
33982
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
30 /**
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
31 * @brief Convert a string to lower case.
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
32 *
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
33 * @param string to be converted
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
34 *
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
35 * @return converted string
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
36 *
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
37 * @note Only characters from A to Z will be converted and this is an in-place conversion.
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
38 */
33052
956c67bb5198 Move strlower() into auxiliary string function file.
ib
parents: 33051
diff changeset
39 char *strlower(char *in)
956c67bb5198 Move strlower() into auxiliary string function file.
ib
parents: 33051
diff changeset
40 {
956c67bb5198 Move strlower() into auxiliary string function file.
ib
parents: 33051
diff changeset
41 char *p = in;
956c67bb5198 Move strlower() into auxiliary string function file.
ib
parents: 33051
diff changeset
42
956c67bb5198 Move strlower() into auxiliary string function file.
ib
parents: 33051
diff changeset
43 while (*p) {
956c67bb5198 Move strlower() into auxiliary string function file.
ib
parents: 33051
diff changeset
44 if (*p >= 'A' && *p <= 'Z')
956c67bb5198 Move strlower() into auxiliary string function file.
ib
parents: 33051
diff changeset
45 *p += 'a' - 'A';
956c67bb5198 Move strlower() into auxiliary string function file.
ib
parents: 33051
diff changeset
46
956c67bb5198 Move strlower() into auxiliary string function file.
ib
parents: 33051
diff changeset
47 p++;
956c67bb5198 Move strlower() into auxiliary string function file.
ib
parents: 33051
diff changeset
48 }
956c67bb5198 Move strlower() into auxiliary string function file.
ib
parents: 33051
diff changeset
49
956c67bb5198 Move strlower() into auxiliary string function file.
ib
parents: 33051
diff changeset
50 return in;
956c67bb5198 Move strlower() into auxiliary string function file.
ib
parents: 33051
diff changeset
51 }
956c67bb5198 Move strlower() into auxiliary string function file.
ib
parents: 33051
diff changeset
52
33982
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
53 /**
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
54 * @brief Swap characters in a string.
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
55 *
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
56 * @param in string to be processed
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
57 * @param from character to be swapped
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
58 * @param to character to swap in
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
59 *
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
60 * @return processed string
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
61 *
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
62 * @note All occurrences will be swapped and this is an in-place processing.
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
63 */
33048
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
64 char *strswap(char *in, char from, char to)
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
65 {
33049
fc7a3f9f74f8 Simplify strswap().
ib
parents: 33048
diff changeset
66 char *p = in;
33048
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
67
33049
fc7a3f9f74f8 Simplify strswap().
ib
parents: 33048
diff changeset
68 while (*p) {
fc7a3f9f74f8 Simplify strswap().
ib
parents: 33048
diff changeset
69 if (*p == from)
fc7a3f9f74f8 Simplify strswap().
ib
parents: 33048
diff changeset
70 *p = to;
33048
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
71
33049
fc7a3f9f74f8 Simplify strswap().
ib
parents: 33048
diff changeset
72 p++;
fc7a3f9f74f8 Simplify strswap().
ib
parents: 33048
diff changeset
73 }
33048
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
74
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
75 return in;
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
76 }
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
77
33982
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
78 /**
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
79 * @brief Remove all space characters from a string,
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
80 * but leave text enclosed in quotation marks untouched.
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
81 *
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
82 * @param in string to be processed
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
83 *
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
84 * @return processed string
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
85 *
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
86 * @note This is an in-place processing.
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
87 */
33048
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
88 char *trim(char *in)
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
89 {
33051
cec61c9f27f4 Simplify trim().
ib
parents: 33049
diff changeset
90 char *src, *dest;
cec61c9f27f4 Simplify trim().
ib
parents: 33049
diff changeset
91 int freeze = 0;
33048
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
92
33051
cec61c9f27f4 Simplify trim().
ib
parents: 33049
diff changeset
93 src = dest = in;
33048
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
94
33051
cec61c9f27f4 Simplify trim().
ib
parents: 33049
diff changeset
95 while (*src) {
cec61c9f27f4 Simplify trim().
ib
parents: 33049
diff changeset
96 if (*src == '"')
cec61c9f27f4 Simplify trim().
ib
parents: 33049
diff changeset
97 freeze = !freeze;
33048
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
98
33051
cec61c9f27f4 Simplify trim().
ib
parents: 33049
diff changeset
99 if (freeze || (*src != ' '))
cec61c9f27f4 Simplify trim().
ib
parents: 33049
diff changeset
100 *dest++ = *src;
cec61c9f27f4 Simplify trim().
ib
parents: 33049
diff changeset
101
cec61c9f27f4 Simplify trim().
ib
parents: 33049
diff changeset
102 src++;
33048
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
103 }
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
104
33051
cec61c9f27f4 Simplify trim().
ib
parents: 33049
diff changeset
105 *dest = 0;
cec61c9f27f4 Simplify trim().
ib
parents: 33049
diff changeset
106
33048
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
107 return in;
c6d0adf896ea Move auxiliary string functions into separate file.
ib
parents:
diff changeset
108 }
33073
334e19411421 Improve handling of the comment character.
ib
parents: 33052
diff changeset
109
33982
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
110 /**
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
111 * @brief Remove a comment from a string,
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
112 * but leave text enclosed in quotation marks untouched.
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
113 *
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
114 * A comment starts either with a semicolon anywhere in the string
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
115 * or with a number sign character at the very beginning.
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
116 *
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
117 * @param in string to be processed
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
118 *
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
119 * @return string without comment
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
120 *
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
121 * @note This is an in-place processing, i.e. @a in will be shortened.
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
122 */
33073
334e19411421 Improve handling of the comment character.
ib
parents: 33052
diff changeset
123 char *decomment(char *in)
334e19411421 Improve handling of the comment character.
ib
parents: 33052
diff changeset
124 {
334e19411421 Improve handling of the comment character.
ib
parents: 33052
diff changeset
125 char *p;
334e19411421 Improve handling of the comment character.
ib
parents: 33052
diff changeset
126 int nap = 0;
334e19411421 Improve handling of the comment character.
ib
parents: 33052
diff changeset
127
334e19411421 Improve handling of the comment character.
ib
parents: 33052
diff changeset
128 p = in;
334e19411421 Improve handling of the comment character.
ib
parents: 33052
diff changeset
129
33080
60b2e408bd78 Allow number sign as comment character.
ib
parents: 33073
diff changeset
130 if (*p == '#')
60b2e408bd78 Allow number sign as comment character.
ib
parents: 33073
diff changeset
131 *p = 0;
60b2e408bd78 Allow number sign as comment character.
ib
parents: 33073
diff changeset
132
33073
334e19411421 Improve handling of the comment character.
ib
parents: 33052
diff changeset
133 while (*p) {
334e19411421 Improve handling of the comment character.
ib
parents: 33052
diff changeset
134 if (*p == '"')
334e19411421 Improve handling of the comment character.
ib
parents: 33052
diff changeset
135 nap = !nap;
334e19411421 Improve handling of the comment character.
ib
parents: 33052
diff changeset
136
334e19411421 Improve handling of the comment character.
ib
parents: 33052
diff changeset
137 if ((*p == ';') && !nap) {
334e19411421 Improve handling of the comment character.
ib
parents: 33052
diff changeset
138 *p = 0;
334e19411421 Improve handling of the comment character.
ib
parents: 33052
diff changeset
139 break;
334e19411421 Improve handling of the comment character.
ib
parents: 33052
diff changeset
140 }
334e19411421 Improve handling of the comment character.
ib
parents: 33052
diff changeset
141
334e19411421 Improve handling of the comment character.
ib
parents: 33052
diff changeset
142 p++;
334e19411421 Improve handling of the comment character.
ib
parents: 33052
diff changeset
143 }
334e19411421 Improve handling of the comment character.
ib
parents: 33052
diff changeset
144
334e19411421 Improve handling of the comment character.
ib
parents: 33052
diff changeset
145 return in;
334e19411421 Improve handling of the comment character.
ib
parents: 33052
diff changeset
146 }
33737
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
147
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
148 char *gstrchr(const char *str, int c)
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
149 {
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
150 if (!str)
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
151 return NULL;
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
152
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
153 return strchr(str, c);
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
154 }
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
155
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
156 int gstrcmp(const char *a, const char *b)
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
157 {
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
158 if (!a && !b)
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
159 return 0;
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
160 if (!a || !b)
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
161 return -1;
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
162
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
163 return strcmp(a, b);
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
164 }
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
165
34628
ee78c9c66508 Add doxgen comment to gstrncmp().
ib
parents: 34560
diff changeset
166 /**
ee78c9c66508 Add doxgen comment to gstrncmp().
ib
parents: 34560
diff changeset
167 * @brief A strncmp() that can handle NULL pointers.
ee78c9c66508 Add doxgen comment to gstrncmp().
ib
parents: 34560
diff changeset
168 *
ee78c9c66508 Add doxgen comment to gstrncmp().
ib
parents: 34560
diff changeset
169 * @param a string to be compared
ee78c9c66508 Add doxgen comment to gstrncmp().
ib
parents: 34560
diff changeset
170 * @param b string which is compared
ee78c9c66508 Add doxgen comment to gstrncmp().
ib
parents: 34560
diff changeset
171 * @param n number of characters compared at the most
ee78c9c66508 Add doxgen comment to gstrncmp().
ib
parents: 34560
diff changeset
172 *
ee78c9c66508 Add doxgen comment to gstrncmp().
ib
parents: 34560
diff changeset
173 * @return return value of strncmp() or -1, if a or b are NULL
ee78c9c66508 Add doxgen comment to gstrncmp().
ib
parents: 34560
diff changeset
174 */
ee78c9c66508 Add doxgen comment to gstrncmp().
ib
parents: 34560
diff changeset
175 int gstrncmp(const char *a, const char *b, size_t n)
33737
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
176 {
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
177 if (!a && !b)
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
178 return 0;
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
179 if (!a || !b)
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
180 return -1;
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
181
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
182 return strncmp(a, b, n);
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
183 }
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
184
33982
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
185 /**
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
186 * @brief Duplicate a string.
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
187 *
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
188 * If @a str is NULL, it returns NULL.
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
189 * The string is duplicated by calling strdup().
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
190 *
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
191 * @param str string to be duplicated
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
192 *
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
193 * @return duplicated string (newly allocated)
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
194 */
33737
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
195 char *gstrdup(const char *str)
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
196 {
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
197 if (!str)
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
198 return NULL;
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
199
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
200 return strdup(str);
71c29e8ec68f Move string functions from interface.c to string.c.
ib
parents: 33080
diff changeset
201 }
33740
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
202
33982
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
203 /**
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
204 * @brief Assign a duplicated string.
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
205 *
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
206 * The string is duplicated by calling #gstrdup().
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
207 *
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
208 * @note @a *old is freed prior to the assignment.
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
209 *
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
210 * @param old pointer to a variable suitable to store the new pointer
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
211 * @param str string to be duplicated
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
212 */
33740
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
213 void setdup(char **old, const char *str)
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
214 {
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
215 free(*old);
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
216 *old = gstrdup(str);
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
217 }
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
218
33982
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
219 /**
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
220 * @brief Assign a newly allocated string
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
221 * containing the path created from a directory and a filename.
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
222 *
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
223 * @note @a *old is freed prior to the assignment.
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
224 *
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
225 * @param old pointer to a variable suitable to store the new pointer
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
226 * @param dir directory
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
227 * @param name filename
d7527ee45784 Add doxygen comments to string.c.
ib
parents: 33786
diff changeset
228 */
33740
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
229 void setddup(char **old, const char *dir, const char *name)
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
230 {
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
231 free(*old);
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
232 *old = malloc(strlen(dir) + strlen(name) + 2);
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
233 if (*old)
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
234 sprintf(*old, "%s/%s", dir, name);
2c02269701bd Remove macros guiSetFilename() and guiSetDF() from interface.h.
ib
parents: 33737
diff changeset
235 }
34175
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
236
34176
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
237 /**
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
238 * @brief Convert #guiInfo member Filename.
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
239 *
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
240 * @param how 0 (cut file path and extension),
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
241 * 1 (additionally, convert lower case) or
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
242 * 2 (additionally, convert upper case)
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
243 * @param fname pointer to a buffer to receive the converted Filename
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
244 * @param maxlen size of @a fname buffer
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
245 *
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
246 * @return pointer to @a fname buffer
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
247 */
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
248 char *TranslateFilename(int how, char *fname, size_t maxlen)
34175
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
249 {
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
250 char *p;
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
251 size_t len;
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
252
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
253 switch (guiInfo.StreamType) {
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
254 case STREAMTYPE_FILE:
34176
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
255 if (guiInfo.Filename && *guiInfo.Filename) {
34175
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
256 p = strrchr(guiInfo.Filename,
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
257 #if HAVE_DOS_PATHS
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
258 '\\');
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
259 #else
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
260 '/');
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
261 #endif
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
262
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
263 if (p)
34176
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
264 av_strlcpy(fname, p + 1, maxlen);
34175
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
265 else
34176
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
266 av_strlcpy(fname, guiInfo.Filename, maxlen);
34175
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
267
34176
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
268 len = strlen(fname);
34175
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
269
34176
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
270 if (len > 3 && fname[len - 3] == '.')
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
271 fname[len - 3] = 0;
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
272 else if (len > 4 && fname[len - 4] == '.')
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
273 fname[len - 4] = 0;
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
274 else if (len > 5 && fname[len - 5] == '.')
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
275 fname[len - 5] = 0;
34175
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
276 } else
34176
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
277 av_strlcpy(fname, MSGTR_NoFileLoaded, maxlen);
34175
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
278 break;
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
279
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
280 case STREAMTYPE_STREAM:
34176
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
281 av_strlcpy(fname, guiInfo.Filename, maxlen);
34175
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
282 break;
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
283
34387
0ba85cad4c7e Add audio CD playback support to the X11/GTK GUI.
ib
parents: 34177
diff changeset
284 case STREAMTYPE_CDDA:
0ba85cad4c7e Add audio CD playback support to the X11/GTK GUI.
ib
parents: 34177
diff changeset
285 snprintf(fname, maxlen, MSGTR_Title, guiInfo.Track);
0ba85cad4c7e Add audio CD playback support to the X11/GTK GUI.
ib
parents: 34177
diff changeset
286 break;
0ba85cad4c7e Add audio CD playback support to the X11/GTK GUI.
ib
parents: 34177
diff changeset
287
34175
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
288 case STREAMTYPE_VCD:
34176
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
289 snprintf(fname, maxlen, MSGTR_Title, guiInfo.Track - 1);
34175
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
290 break;
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
291
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
292 case STREAMTYPE_DVD:
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
293 if (guiInfo.Chapter)
34176
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
294 snprintf(fname, maxlen, MSGTR_Chapter, guiInfo.Chapter);
34175
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
295 else
34176
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
296 av_strlcat(fname, MSGTR_NoChapter, maxlen);
34175
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
297 break;
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
298
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
299 default:
34176
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
300 av_strlcpy(fname, MSGTR_NoMediaOpened, maxlen);
34175
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
301 break;
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
302 }
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
303
34176
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
304 if (how) {
34177
fadc00cc31d3 Optimize TranslateFilename().
ib
parents: 34176
diff changeset
305 p = fname;
fadc00cc31d3 Optimize TranslateFilename().
ib
parents: 34176
diff changeset
306
fadc00cc31d3 Optimize TranslateFilename().
ib
parents: 34176
diff changeset
307 while (*p) {
fadc00cc31d3 Optimize TranslateFilename().
ib
parents: 34176
diff changeset
308 char t = 0;
34175
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
309
34177
fadc00cc31d3 Optimize TranslateFilename().
ib
parents: 34176
diff changeset
310 if (how == 1 && *p >= 'A' && *p <= 'Z')
fadc00cc31d3 Optimize TranslateFilename().
ib
parents: 34176
diff changeset
311 t = 32;
fadc00cc31d3 Optimize TranslateFilename().
ib
parents: 34176
diff changeset
312 if (how == 2 && *p >= 'a' && *p <= 'z')
fadc00cc31d3 Optimize TranslateFilename().
ib
parents: 34176
diff changeset
313 t = -32;
34175
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
314
34177
fadc00cc31d3 Optimize TranslateFilename().
ib
parents: 34176
diff changeset
315 *p = *p + t;
fadc00cc31d3 Optimize TranslateFilename().
ib
parents: 34176
diff changeset
316 p++;
34175
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
317 }
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
318 }
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
319
34176
d52b0ad317d5 Cosmetic: Rename TranslateFilename()'s parameter names.
ib
parents: 34175
diff changeset
320 return fname;
34175
a345e7162d0a Move TranslateFilename() to util/string.c.
ib
parents: 33982
diff changeset
321 }
34560
abcf26dcec6b Add fgetstr() to read from files without end-of-line characters.
ib
parents: 34454
diff changeset
322
abcf26dcec6b Add fgetstr() to read from files without end-of-line characters.
ib
parents: 34454
diff changeset
323 /**
abcf26dcec6b Add fgetstr() to read from files without end-of-line characters.
ib
parents: 34454
diff changeset
324 * @brief Read characters from @a file.
abcf26dcec6b Add fgetstr() to read from files without end-of-line characters.
ib
parents: 34454
diff changeset
325 *
34629
531c69f090da Cosmetic: Change comment.
ib
parents: 34628
diff changeset
326 * @note Reading stops with an end-of-line character or at end of file.
34560
abcf26dcec6b Add fgetstr() to read from files without end-of-line characters.
ib
parents: 34454
diff changeset
327 *
abcf26dcec6b Add fgetstr() to read from files without end-of-line characters.
ib
parents: 34454
diff changeset
328 * @param str pointer to a buffer to receive the read characters
abcf26dcec6b Add fgetstr() to read from files without end-of-line characters.
ib
parents: 34454
diff changeset
329 * @param size number of characters read at the most (including a terminating null-character)
abcf26dcec6b Add fgetstr() to read from files without end-of-line characters.
ib
parents: 34454
diff changeset
330 * @param file file to read from
abcf26dcec6b Add fgetstr() to read from files without end-of-line characters.
ib
parents: 34454
diff changeset
331 *
abcf26dcec6b Add fgetstr() to read from files without end-of-line characters.
ib
parents: 34454
diff changeset
332 * @return str (success) or NULL (error)
abcf26dcec6b Add fgetstr() to read from files without end-of-line characters.
ib
parents: 34454
diff changeset
333 */
abcf26dcec6b Add fgetstr() to read from files without end-of-line characters.
ib
parents: 34454
diff changeset
334 char *fgetstr(char *str, int size, FILE *file)
abcf26dcec6b Add fgetstr() to read from files without end-of-line characters.
ib
parents: 34454
diff changeset
335 {
abcf26dcec6b Add fgetstr() to read from files without end-of-line characters.
ib
parents: 34454
diff changeset
336 char *s;
abcf26dcec6b Add fgetstr() to read from files without end-of-line characters.
ib
parents: 34454
diff changeset
337
abcf26dcec6b Add fgetstr() to read from files without end-of-line characters.
ib
parents: 34454
diff changeset
338 s = fgets(str, size, file);
abcf26dcec6b Add fgetstr() to read from files without end-of-line characters.
ib
parents: 34454
diff changeset
339
abcf26dcec6b Add fgetstr() to read from files without end-of-line characters.
ib
parents: 34454
diff changeset
340 if (s)
abcf26dcec6b Add fgetstr() to read from files without end-of-line characters.
ib
parents: 34454
diff changeset
341 s[strcspn(s, "\n\r")] = 0;
abcf26dcec6b Add fgetstr() to read from files without end-of-line characters.
ib
parents: 34454
diff changeset
342
abcf26dcec6b Add fgetstr() to read from files without end-of-line characters.
ib
parents: 34454
diff changeset
343 return s;
abcf26dcec6b Add fgetstr() to read from files without end-of-line characters.
ib
parents: 34454
diff changeset
344 }