dragonbane

Dump Dir

Apr 2nd, 2017
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.23 KB | None | 0 0
  1. int dump_dir(void *pClient, void *pCmd, char *path, void * pBuffer, int size,int error, int handle)
  2. {
  3.     int dir_handle = handle;
  4.     int my_handle = handle +1;
  5.     int ret = 0;
  6.     int final_result = 0;
  7.     if ((ret = FSOpenDir(pClient, pCmd, path, &dir_handle, FS_RET_ALL_ERROR)) == FS_STATUS_OK)
  8.     {
  9.         FSDirEntry dir_entry;
  10.         while (FSReadDir(pClient,  pCmd, dir_handle, &dir_entry, FS_RET_ALL_ERROR) == FS_STATUS_OK && final_result == 0)
  11.         {
  12.             char full_path[strlen(path) + 1 + strlen(dir_entry.name) +1];
  13.  
  14.             if((dir_entry.stat.flag&FS_STAT_FLAG_IS_DIRECTORY) == FS_STAT_FLAG_IS_DIRECTORY)
  15.             {
  16.                 log_string(socket_log, "-> dir", BYTE_LOG_STR);
  17.  
  18.                 if(dump_dir(pClient, pCmd,full_path,pBuffer,size,error,my_handle) == -1)
  19.                 {
  20.                     final_result = -1;
  21.                 }
  22.             }
  23.             else
  24.             {
  25.                 ret = FSOpenFile(pClient,  pCmd, full_path, "r", &my_handle, error);
  26.                 if (ret >= 0)
  27.                 {
  28.                    
  29.                 }
  30.                 else
  31.                 {
  32.                     final_result = -1;
  33.                 }
  34.             }
  35.         }
  36.         if(FSCloseDir(pClient,  pCmd, dir_handle, error) <  FS_STATUS_OK)
  37.         {
  38.             if(DEBUG_LOG) log_string(socket_log, "error on FSCloseDir()", BYTE_LOG_STR);
  39.         }
  40.     }
  41.     else
  42.     {
  43.         log_string(socket_log, "error on FSOpenDir()", BYTE_LOG_STR);
  44.         final_result = -1;
  45.     }
  46.     return final_result;
  47. }
Add Comment
Please, Sign In to add comment