// универсальность добавления / // относительный путь относительно программы void copyf(dword params) { //copyf: /sys/lib|/sys/lib2 char from[4096], to[4096]; BDVK from_atr; int border; if (!params) { notify("Error: no copyf params!"); return; } //ищем разделитель border = strchr(params, '|'); if (!border) border = strchr(params, ' '); if (ESBYTE[params]<>'/') //абсолютный путь? { strcpy(#from, #program_path); strcat(#from, params); from[border+strlen(#program_path)-1]=NULL; } else { strcat(#from, params); from[border-1]=NULL; } strcpy(#to, params+border); GetFileInfo(#from, #from_atr); if (TestBit(from_atr.attr, 4)==1) CopyFolder(#from, #to); else CopyFile(#from, #to); } void CopyFolder(dword from, to) { dword dirbuf, fcount, filename; int i, error, isdir; char copy_from[4096], copy_in[4096]; char from2[4096], to2[4096]; error = GetDir(#dirbuf, #fcount, from); if (error) { debug_error(from, error); return; } if ((strcmp(to, "/sys")!=0) && (strcmp(to, "/tmp9/1")!=0)) { error = CreateDir(to); if (error) debug_error(to, error); } chrcat(to, '/'); chrcat(from, '/'); for (i=0; i