annotate gui/util/cut.c @ 36250:7e4a8748cf9a

Fix issues with glibc on 32 bit. Some glibc versions e.g. from RedHat will cause incorrect behaviour when a certain magic symbol is not encountered. This is just abhorrent and simply unacceptable, breaking well-behaving programs to the benefit of ancient programs, but let's try to make it work anyway (and hope they won't repeat the insanity).
author reimar
date Sat, 15 Jun 2013 16:11:47 +0000
parents a59b359c20f7
children 0b80003f6542
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
1 /*
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
2 * This file is part of MPlayer.
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
3 *
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
4 * MPlayer is free software; you can redistribute it and/or modify
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
5 * it under the terms of the GNU General Public License as published by
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
6 * the Free Software Foundation; either version 2 of the License, or
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
7 * (at your option) any later version.
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
8 *
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
9 * MPlayer is distributed in the hope that it will be useful,
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
12 * GNU General Public License for more details.
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
13 *
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
14 * You should have received a copy of the GNU General Public License along
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
15 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
17 */
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
18
33981
a59b359c20f7 Add doxygen comments to cut.c and cut.h.
ib
parents: 33053
diff changeset
19 /**
a59b359c20f7 Add doxygen comments to cut.c and cut.h.
ib
parents: 33053
diff changeset
20 * @file
a59b359c20f7 Add doxygen comments to cut.c and cut.h.
ib
parents: 33053
diff changeset
21 * @brief Parser helpers
a59b359c20f7 Add doxygen comments to cut.c and cut.h.
ib
parents: 33053
diff changeset
22 */
a59b359c20f7 Add doxygen comments to cut.c and cut.h.
ib
parents: 33053
diff changeset
23
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
24 #include <stdlib.h>
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
25 #include <string.h>
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
26
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
27 #include "cut.h"
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
28
33981
a59b359c20f7 Add doxygen comments to cut.c and cut.h.
ib
parents: 33053
diff changeset
29 /**
a59b359c20f7 Add doxygen comments to cut.c and cut.h.
ib
parents: 33053
diff changeset
30 * @brief Extract a part of a string delimited by a separator character.
a59b359c20f7 Add doxygen comments to cut.c and cut.h.
ib
parents: 33053
diff changeset
31 *
a59b359c20f7 Add doxygen comments to cut.c and cut.h.
ib
parents: 33053
diff changeset
32 * @param in string to be analyzed
a59b359c20f7 Add doxygen comments to cut.c and cut.h.
ib
parents: 33053
diff changeset
33 * @param out pointer suitable to store the extracted part
a59b359c20f7 Add doxygen comments to cut.c and cut.h.
ib
parents: 33053
diff changeset
34 * @param sep separator character
a59b359c20f7 Add doxygen comments to cut.c and cut.h.
ib
parents: 33053
diff changeset
35 * @param num number of separator characters to be skipped before extraction starts
a59b359c20f7 Add doxygen comments to cut.c and cut.h.
ib
parents: 33053
diff changeset
36 * @param maxout maximum length of extracted part (including the trailing null byte)
a59b359c20f7 Add doxygen comments to cut.c and cut.h.
ib
parents: 33053
diff changeset
37 */
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
38 void cutItemString(char *in, char *out, char sep, int num, size_t maxout)
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
39 {
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
40 int n;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
41 unsigned int i, c;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
42
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
43 for (c = 0, n = 0, i = 0; in[i]; i++) {
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
44 if (in[i] == sep)
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
45 n++;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
46 if (n >= num && in[i] != sep && c + 1 < maxout)
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
47 out[c++] = in[i];
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
48 if (n >= num && in[i + 1] == sep)
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
49 break;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
50 }
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
51
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
52 if (c < maxout)
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
53 out[c] = 0;
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
54 }
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
55
33981
a59b359c20f7 Add doxygen comments to cut.c and cut.h.
ib
parents: 33053
diff changeset
56 /**
a59b359c20f7 Add doxygen comments to cut.c and cut.h.
ib
parents: 33053
diff changeset
57 * @brief Extract a numeric part of a string delimited by a separator character.
a59b359c20f7 Add doxygen comments to cut.c and cut.h.
ib
parents: 33053
diff changeset
58 *
a59b359c20f7 Add doxygen comments to cut.c and cut.h.
ib
parents: 33053
diff changeset
59 * @param in string to be analyzed
a59b359c20f7 Add doxygen comments to cut.c and cut.h.
ib
parents: 33053
diff changeset
60 * @param sep separator character
a59b359c20f7 Add doxygen comments to cut.c and cut.h.
ib
parents: 33053
diff changeset
61 * @param num number of separator characters to be skipped before extraction starts
a59b359c20f7 Add doxygen comments to cut.c and cut.h.
ib
parents: 33053
diff changeset
62 *
a59b359c20f7 Add doxygen comments to cut.c and cut.h.
ib
parents: 33053
diff changeset
63 * @return extracted number (numeric part)
a59b359c20f7 Add doxygen comments to cut.c and cut.h.
ib
parents: 33053
diff changeset
64 */
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
65 int cutItemToInt(char *in, char sep, int num)
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
66 {
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
67 char tmp[64];
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
68
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
69 cutItem(in, tmp, sep, num);
33053
f64d41dac10b Cosmetic: Separate return statement with newline.
ib
parents: 33046
diff changeset
70
33046
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
71 return atoi(tmp);
9684ad0e1291 Move files with auxiliary functions to own directory.
ib
parents:
diff changeset
72 }