Beispiel #1
0
/*****************************************************************************
 * config_CreateDir: Create configuration directory if it doesn't exist.
 *****************************************************************************/
int config_CreateDir( vlc_object_t *p_this, const char *psz_dirname )
{
    if( !psz_dirname || !*psz_dirname ) return -1;

    if( utf8_mkdir( psz_dirname, 0700 ) == 0 )
        return 0;

    switch( errno )
    {
        case EEXIST:
            return 0;

        case ENOENT:
        {
            /* Let's try to create the parent directory */
            char psz_parent[strlen( psz_dirname ) + 1], *psz_end;
            strcpy( psz_parent, psz_dirname );

            psz_end = strrchr( psz_parent, DIR_SEP_CHAR );
            if( psz_end && psz_end != psz_parent )
            {
                *psz_end = '\0';
                if( config_CreateDir( p_this, psz_parent ) == 0 )
                {
                    if( !utf8_mkdir( psz_dirname, 0700 ) )
                        return 0;
                }
            }
        }
    }

    msg_Err( p_this, "could not create %s: %m", psz_dirname );
    return -1;
}
Beispiel #2
0
static void ArtCacheCreateDir( const char *psz_dir )
{
    char newdir[strlen( psz_dir ) + 1];
    strcpy( newdir, psz_dir );
    char * psz_newdir = newdir;
    char * psz = psz_newdir;

    while( *psz )
    {
        while( *psz && *psz != DIR_SEP_CHAR) psz++;
        if( !*psz ) break;
        *psz = 0;
        if( !EMPTY_STR( psz_newdir ) )
            utf8_mkdir( psz_newdir, 0700 );
        *psz = DIR_SEP_CHAR;
        psz++;
    }
    utf8_mkdir( psz_dir, 0700 );
}
Beispiel #3
0
int run_file() {
	int result = 0;
	g_current_step = 0;
	file_close();

	g_fd = utf8_fopen(g_filename, "rb");
	if (!g_fd) {
		ERROR_LOG("Cannot open file %s. Error(%d): %s\n", g_filename, errno, strerror(errno));
		result = errno;
		goto cleanup;
	}

	char line[LINE_SIZE];
	char line2[LINE_SIZE];
	while (fgets(line, LINE_SIZE, g_fd)) {
		if (g_abort) {
			break;
		}
		chomp(line);
		if (strcmp(line, "D") == 0) {
			fgets(line, LINE_SIZE, g_fd);
			chomp(line);
			DEBUG_LOG("Making dir %s\n", line);
			int res = TRY(utf8_mkdir(line), res != 0, "mkdir error: (%d) %s\n", errno, strerror(errno));
			g_current_step += MKDIR_STEP;
			inform_progress();
		} else if (strcmp(line, "F") == 0) {
			fgets(line, LINE_SIZE, g_fd);
			chomp(line);
			fgets(line2, LINE_SIZE, g_fd);
			chomp(line2);
			DO(cp(line, line2, CP_BUFFER_SIZE));
		}
	}

cleanup:
	if (g_fd) {
		fclose(g_fd);
		g_fd = NULL;
	}

	if (result == 0 && g_file_full) {
		result = 2;
	}

	if (result == 0 && g_abort) {
		result = 1;
	}
	return result;
}