1 /* vim:tw=78:ts=8:sw=4:set ft=c: */
3 Copyright (C) 2006-2008 Ben Kibbey <bjk@luxsci.net>
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 #include <sys/types.h>
26 #include <glib/gprintf.h>
34 gboolean
strv_printf(gchar
***array
, const gchar
*fmt
, ...)
39 gint len
= *array
? g_strv_length(*array
) : 0;
45 if ((a
= g_realloc(*array
, (len
+ 2) * sizeof(gchar
*))) == NULL
)
49 ret
= g_vasprintf(&buf
, fmt
, ap
);
61 gchar
**strvcatv(gchar
**dst
, gchar
**src
)
77 for (p
= src
; *p
; p
++) {
80 pa
= g_realloc(d
, (i
+ 2) * sizeof(gchar
*));
101 gboolean
valid_filename(const gchar
*filename
)
105 if (!filename
|| !*filename
)
108 for (p
= filename
; *p
; p
++) {
109 if (g_ascii_isalnum(*p
) == FALSE
&& *p
!= '-' && *p
!= '_' && *p
!= '.')
116 gint
open_file(const gchar
*filename
, struct stat
*st
)
120 if ((fd
= open(filename
, O_RDONLY
)) == -1)
123 if (stat(filename
, st
) == -1) {
131 gchar
*print_fmt(gchar
*buf
, gsize len
, const char *fmt
, ...)
136 g_vsnprintf(buf
, len
, fmt
, ap
);
141 gboolean
contains_whitespace(const gchar
*str
)
143 const gchar
*p
= str
;
147 len
= g_utf8_strlen(p
++, -1) -1;
150 c
= g_utf8_get_char(p
++);
152 if (g_unichar_isspace(c
))
159 gchar
*expand_homedir(gchar
*str
)
164 return g_strdup_printf("%s%s", g_get_home_dir(), p
);
166 return g_strdup(str
);