Esempio n. 1
0
File: dirs.c Progetto: IAPark/vlc
char *config_GetDataDir (void)
{
    const char *path = getenv ("VLC_DATA_PATH");
    if (path != NULL)
        return strdup (path);

    char *libdir = config_GetLibDir ();
    if (libdir == NULL)
        return NULL; /* OOM */

    char *datadir = NULL;

    /* There are no clean ways to do this, are there?
     * Due to multilibs, we cannot simply append ../share/. */
    char *p = strstr (libdir, "/lib/");
    if (p != NULL)
    {
        char *p2;
        /* Deal with nested "lib" directories. Grmbl. */
        while ((p2 = strstr (p + 4, "/lib/")) != NULL)
            p = p2;
        *p = '\0';

        if (unlikely(asprintf (&datadir, "%s/share/"PACKAGE, libdir) == -1))
            datadir = NULL;
    }
    free (libdir);
    return (datadir != NULL) ? datadir : strdup (PKGDATADIR);
}
Esempio n. 2
0
File: vlc.c Progetto: flyskywhy/vlc
int vlclua_dir_list( vlc_object_t *p_this, const char *luadirname,
                     char ***pppsz_dir_list )
{
#define MAX_DIR_LIST_SIZE 5
    *pppsz_dir_list = malloc(MAX_DIR_LIST_SIZE*sizeof(char *));
    if (!*pppsz_dir_list)
        return VLC_EGENERIC;
    char **ppsz_dir_list = *pppsz_dir_list;

    int i = 0;
    char *datadir = config_GetUserDir( VLC_DATA_DIR );

    if( likely(datadir != NULL)
     && likely(asprintf( &ppsz_dir_list[i], "%s"DIR_SEP"lua"DIR_SEP"%s",
                         datadir, luadirname ) != -1) )
        i++;
    free( datadir );

#if !(defined(__APPLE__) || defined(WIN32) || defined(__OS2__))
    char *psz_libpath = config_GetLibDir();
    if( likely(psz_libpath != NULL) )
    {
        if( likely(asprintf( &ppsz_dir_list[i], "%s"DIR_SEP"lua"DIR_SEP"%s",
                             psz_libpath, luadirname ) != -1) )
            i++;
        free( psz_libpath );
    }
#endif

    char *psz_datapath = config_GetDataDir();
    if( likely(psz_datapath != NULL) )
    {
        if( likely(asprintf( &ppsz_dir_list[i], "%s"DIR_SEP"lua"DIR_SEP"%s",
                              psz_datapath, luadirname ) != -1) )
            i++;

#if defined(__APPLE__)
        if( likely(asprintf( &ppsz_dir_list[i],
                             "%s"DIR_SEP"share"DIR_SEP"lua"DIR_SEP"%s",
                             psz_datapath, luadirname ) != -1) )
            i++;
#endif
        free( psz_datapath );
    }

    ppsz_dir_list[i] = NULL;

    assert( i < MAX_DIR_LIST_SIZE);

    return VLC_SUCCESS;
}
Esempio n. 3
0
char *config_GetDataDir (void)
{
    const char *path = getenv ("VLC_DATA_PATH");
    if (path)
        return strdup (path);

    char *vlcpath = config_GetLibDir ();
    char *datadir;

    if (asprintf (&datadir, "%s/share", vlcpath) == -1)
        datadir = NULL;

    free (vlcpath);
    return datadir;
}
Esempio n. 4
0
char *config_GetDataDir (void)
{
    const char *path = getenv ("VLC_DATA_PATH");
    return (path != NULL) ? strdup (path) : config_GetLibDir ();
}