Make it work for files also
[kugel-rb.git] / apps / paths.c
blob6806587ba010a70750f8ac4dfb62deb6a38035b1
1 /***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
10 * Copyright (C) 2010 Thomas Martitz
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
20 ****************************************************************************/
23 #include <stdio.h> /* snprintf */
24 #include <stdlib.h>
25 #include "file.h" /* MAX_PATH */
26 #include <dir.h>
27 #include "string-extra.h"
30 void paths_init(void)
32 /* make sure $HOME/.config/rockbox.org exists, it's needed for config.cfg */
33 char home_path[MAX_PATH];
34 snprintf(home_path, sizeof(home_path), "%s/.config/rockbox.org", getenv("HOME"));
35 mkdir(home_path);
38 const char* get_user_file_path(const char *path,
39 bool is_file,
40 char* buf,
41 const size_t bufsize)
43 const char *ret = path;
44 char end[MAX_PATH];
45 memset(end, 0, sizeof(end));
46 printf("%s(): looking for %s\n", __func__, path);
47 /* hopefully rockbox directories never get spaces in their name */
48 if (sscanf(path, ROCKBOX_DIR "/%s", end) == 0)
49 return NULL;
50 if (snprintf(buf, bufsize, "%s/.config/rockbox.org/%s", getenv("HOME"), end)
51 >= bufsize)
52 return NULL;
54 if (is_file)
56 if (file_exists(buf))
57 ret = buf;
59 else
61 if (dir_exists(buf))
62 ret = buf;
65 printf("%s(): %s\n", __func__, ret);
66 return ret;