Участник
Пользователь
- Сообщения
- 134
- Реакции
- 40
- Помог
- 2 раз(а)
Существует ли аналогичная функция - rename_file, только для переименовывания папок?
#include <amxmodx>
new sDir1[] = "addons/amxmodx/configs/plugins/test1";
new sDir2[] = "addons/amxmodx/configs/plugins/test2";
public plugin_init() {
register_plugin("Test", "0.0.1", "Albertio");
rename_file(sDir1, sDir2, 1);
}
If true, native will act like other natives which
use the moddir as a base directory. Otherwise, the
current directory is undefined (but assumed to be hlds).
stock rename_dir(szOldDirPath[], const szNewDirPath[]) {
if(equal(szOldDirPath, szNewDirPath))
return 0;
new hDir, szFileName[64];
hDir = open_dir(szOldDirPath, szFileName, charsmax(szFileName));
if(!hDir)
return 0;
enum _:FileData {
FileName[128],
FileLine[256]
};
new Array:eFileData = ArrayCreate(FileData), eTempFileData[FileData];
new hFile, szFilePath[128], szLine[256];
while(next_file(hDir, szFileName, charsmax(szFileName)) == 1) {
if(szFileName[0] == '.')
continue;
formatex(szFilePath, charsmax(szFilePath), "%s/%s", szOldDirPath, szFileName);
if(!(hFile = fopen(szFilePath, "rt")))
continue;
while(!feof(hFile)) {
fgets(hFile, szLine, charsmax(szLine));
trim(szLine);
formatex(eTempFileData[FileName], charsmax(eTempFileData[FileName]), "%s/%s", szNewDirPath, szFileName);
formatex(eTempFileData[FileLine], charsmax(eTempFileData[FileLine]), szLine);
ArrayPushArray(eFileData, eTempFileData);
}
fclose(hFile);
delete_file(szFilePath);
}
close_dir(hDir);
rmdir(szOldDirPath);
mkdir(szNewDirPath);
new iFileCount = ArraySize(eFileData);
for(new i; i < iFileCount; i++) {
ArrayGetArray(eFileData, i, eTempFileData);
write_file(eTempFileData[FileName], eTempFileData[FileLine]);
}
ArrayDestroy(eFileData);
return 1;
}