annotate mp_strings.c @ 33353:63dbf59fa312

Move some common fribidi code into a shared function. This should also ease hacks for compilation against older versions.
author reimar
date Sun, 08 May 2011 08:52:43 +0000
parents ca6dcdb31fa1
children 2ef9298a81e7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
32883
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
1 /*
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
2 * Strings utilities
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
3 *
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
4 * This file is part of MPlayer.
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
5 *
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
6 * MPlayer is free software; you can redistribute it and/or modify
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
7 * it under the terms of the GNU General Public License as published by
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
9 * (at your option) any later version.
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
10 *
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
11 * MPlayer is distributed in the hope that it will be useful,
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
14 * GNU General Public License for more details.
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
15 *
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
16 * You should have received a copy of the GNU General Public License along
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
17 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
19 */
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
20
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
21 #include <stdlib.h>
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
22 #include <stdarg.h>
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
23 #include <stdio.h>
32949
ca6dcdb31fa1 Cosmetics: add empty line between system and local headers and remove pointless
cboesch
parents: 32883
diff changeset
24
32883
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
25 #include "mp_strings.h"
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
26
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
27 char *mp_asprintf(const char *fmt, ...)
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
28 {
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
29 char *p = NULL;
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
30 va_list va, va_bak;
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
31 int len;
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
32
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
33 va_start(va, fmt);
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
34 va_copy(va_bak, va);
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
35
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
36 len = vsnprintf(NULL, 0, fmt, va);
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
37 if (len < 0)
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
38 goto end;
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
39
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
40 p = malloc(len + 1);
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
41 if (!p)
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
42 goto end;
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
43
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
44 len = vsnprintf(p, len + 1, fmt, va_bak);
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
45 if (len < 0)
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
46 free(p), p = NULL;
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
47
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
48 end:
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
49 va_end(va);
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
50 return p;
fa04e96e6177 Add mp_strings.c with mp_asprintf function.
cboesch
parents:
diff changeset
51 }