Loads doodles from $HOME/doodle also
[tbo.git] / src / tbo-files.c
1 #include <sys/stat.h>
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <string.h>
5 #include "tbo-files.h"
6
7 char **tbo_files_get_dirs ()
8 {
9     // Possible doodle dirs
10     char **possible_dirs = malloc (3*sizeof(char*));
11     possible_dirs[0] = malloc (255*sizeof(char*));
12     possible_dirs[1] = malloc (255*sizeof(char*));
13     possible_dirs[2] = NULL;
14
15     strcat (strcpy (possible_dirs[0], getenv("HOME")), "/.tbo/doodle");
16     strcpy (possible_dirs[1], DATA_DIR "/doodle");
17
18     return possible_dirs;
19 }
20
21 int
22 tbo_files_prefix_len (char *str)
23 {
24     int n, i = 0;
25     char **possible_dirs = tbo_files_get_dirs ();
26     while (possible_dirs[i])
27     {
28         if (g_str_has_prefix (str, possible_dirs[i]))
29         {
30             n = strlen (possible_dirs[i]) + 1;
31             break;
32         }
33         i++;
34     }
35     tbo_files_free (possible_dirs);
36     return n;
37 }
38
39 void
40 tbo_files_free (char **files)
41 {
42     int i = 0;
43     while(files[i])
44     {
45         free (files[i]);
46         i++;
47     }
48     free (files);
49 }
50
51 void
52 tbo_files_expand_path (char *source, char *dest)
53 {
54     int st, i = 0;
55     char **possible_dirs = tbo_files_get_dirs ();
56     struct stat filestat;
57     while (possible_dirs[i])
58     {
59         snprintf (dest, 255, "%s/%s", possible_dirs[i], source);
60         st = stat (dest, &filestat);
61         if (!st)
62             break;
63
64         i++;
65     }
66
67     tbo_files_free (possible_dirs);
68 }