/** * Delete the given directory as the user from each of the tt_root directories * user: the user doing the delete * subdir: the subdir to delete */ int delete_as_user(const char *user, const char *subdir) { int ret = 0; char** tt_roots = get_values(TT_SYS_DIR_KEY); char** ptr; if (tt_roots == NULL || *tt_roots == NULL) { fprintf(LOGFILE, "No %s defined in the configuration\n", TT_SYS_DIR_KEY); return INVALID_CONFIG_FILE; } // do the delete for(ptr = tt_roots; *ptr != NULL; ++ptr) { char* full_path = get_user_subdirectory(*ptr, user, subdir); if (full_path == NULL) { return -1; } int this_ret = delete_path(full_path, strlen(subdir) == 0); free(full_path); // delete as much as we can, but remember the error if (this_ret != 0) { ret = this_ret; } } free_values(tt_roots); return ret; }
/** * Delete the given directory as the user from each of the tt_root directories * user: the user doing the delete * subdir: the subdir to delete */ int delete_as_user(const char *user, const char * good_local_dirs, const char *subdir) { int ret = 0; char** tt_roots = get_mapred_local_dirs(good_local_dirs); char** ptr; if (tt_roots == NULL || *tt_roots == NULL) { fprintf(LOGFILE, "Good mapred local directories could ot be obtained.\n"); return INVALID_TT_ROOT; } // do the delete for(ptr = tt_roots; *ptr != NULL; ++ptr) { char* full_path = get_user_subdirectory(*ptr, user, subdir); if (full_path == NULL) { return -1; } int this_ret = delete_path(full_path, strlen(subdir) == 0); free(full_path); // delete as much as we can, but remember the error if (this_ret != 0) { ret = this_ret; } } free_values(tt_roots); return ret; }
bool palm_installer::install_files_by_handheld_dest( handheld_dest_type& handheld_dest, wxArrayString& install_fullnames ) { wxString destination_fullname; wxString destination_path; wxString destination_rootpath; wxString destination_basename; wxString destination_extension; int user_index; wxString install_fullname; bool install_fullname_exists = false; bool successful = false; // This is a dummy to induce a translatable string, when we want the original to stay as untranslated. wxString dummy1 = _( "SecureDigital (SD) Card" ); wxLogDebug( wxT( "Entering palm_installer::install_files_by_handheld_dest function" ) ); // If wxArrayString is empty, then abort if ( install_fullnames.IsEmpty() ) { wxLogDebug( "Error: no filenames sent to install_files_by_handheld_dest. Aborting..." ); return false; } // Look up the user_index of this user_name user_index = get_user_index_from_user_name( handheld_dest.user_name ); if ( get_number_of_users() > 0 ) { destination_rootpath = get_palm_desktop_path() + "/" + get_user_subdirectory( user_index ); // If installing to card, use that path... switch ( handheld_dest.handheld_target_storage_mode ) { case plkrHANDHELD_TARGET_STORAGE_MODE_SD_CARD: destination_path = get_translated_handheld_destination_path( destination_rootpath, "SecureDigital (SD) Card", "SecureDigital" ); break; case plkrHANDHELD_TARGET_STORAGE_MODE_MEMORY_STICK: destination_path = destination_rootpath + "/Files to Install/Memory Stick"; break; case plkrHANDHELD_TARGET_STORAGE_MODE_COMPACT_FLASH: destination_path = destination_rootpath + "/Files to Install/Compact Flash Card"; break; // default is the normal RAM one. default: destination_path = destination_rootpath + "/Files to Install"; break; } // Check the destination rootpath exists. It may not, if it was a newly created // user, it may not have its directory yet wxLogDebug( "destination_rootpath=" + destination_rootpath ); // If this is a brand new user, won't have an "Install" subdirectory // in his/her directory yet, so create it, if not there yet. if ( ! wxDirExists( destination_path ) ) { wxLogDebug( "destination_path not exist, so making..." ); // If the "Files to Install" doesn't exist, then need to make that, before can // make a dir such as "Memory Stick" inside of that. if ( ! wxDirExists ( destination_rootpath + "/Files to Install" ) ) { wxMkdir( destination_rootpath + "/Files to Install", 0777 ); } // OK: can now make the SecureDigital (SD) Card or Memory Stick dir // if destination is a card (or the "Files to Install" dir if not card). wxMkdir( destination_path, 0777 ); } for ( size_t n = 0; n < install_fullnames.GetCount(); n++ ) { wxLogDebug( "Starting loop to install" ); install_fullname = install_fullnames.Item( n ); wxLogDebug( "install_fullname=" + install_fullname ); install_fullname_exists = wxFileExists( install_fullname ); if ( install_fullname_exists ) { // Get the basename and extension, so it can have the same basename + extension // in the install directory. wxSplitPath( install_fullname.c_str(), NULL, &destination_basename, &destination_extension ); destination_fullname = destination_path + "/" + destination_basename + '.' + destination_extension; // Copy the file over. if ( wxCopyFile( install_fullname, destination_fullname, TRUE ) ) { successful = TRUE; } else { wxLogError( "Error: couldn't copy " + install_fullname + " to " + destination_fullname ); } } else { wxLogDebug( "Error: install_fullname " + install_fullname + " doesn't exist" ); } } } return successful; }