1 /* vim:tw=78:ts=8:sw=4:set ft=c: */
3 Copyright (C) 2006-2009 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 02110-1301 USA
22 #include <sys/types.h>
26 #include <glib/gprintf.h>
36 gboolean
strv_printf(gchar
***array
, const gchar
*fmt
, ...)
41 gint len
= *array
? g_strv_length(*array
) : 0;
47 if ((a
= g_realloc(*array
, (len
+ 2) * sizeof(gchar
*))) == NULL
)
51 ret
= g_vasprintf(&buf
, fmt
, ap
);
63 gchar
**strvcatv(gchar
**dst
, gchar
**src
)
79 for (p
= src
; *p
; p
++) {
82 pa
= g_realloc(d
, (i
+ 2) * sizeof(gchar
*));
103 gboolean
valid_filename(const gchar
*filename
)
107 if (!filename
|| !*filename
)
110 for (p
= filename
; *p
; p
++) {
111 if (*p
== '/' || isspace(*p
))
118 gint
open_file(const gchar
*filename
, struct stat
*st
)
122 if ((fd
= open(filename
, O_RDONLY
)) == -1)
125 if (stat(filename
, st
) == -1) {
133 gchar
*print_fmt(gchar
*buf
, gsize len
, const char *fmt
, ...)
138 g_vsnprintf(buf
, len
, fmt
, ap
);
143 gboolean
contains_whitespace(const gchar
*str
)
145 const gchar
*p
= str
;
149 len
= g_utf8_strlen(p
++, -1) -1;
152 c
= g_utf8_get_char(p
++);
154 if (g_unichar_isspace(c
))
161 gchar
*expand_homedir(gchar
*str
)
166 return g_strdup_printf("%s%s", g_get_home_dir(), p
);
168 return g_strdup(str
);