/***************************************************************************** * 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; }
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 ); }
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; }