Subversion Repositories Kolibri OS

Rev

Rev 4015 | Rev 7024 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.  
  2. int cmd_ls(char dir[])
  3. {
  4.  
  5. kol_struct70    k70;
  6. unsigned        *n;
  7. unsigned        num_of_file;
  8. unsigned        *t;
  9. unsigned        type_of_file;
  10. int             i, result;
  11.  
  12.  
  13. k70.p00 = 1;
  14. k70.p04 = 0;
  15. //k70.p08 = 0;
  16. k70.p12 = 2;  // just for test exist & read number of entries
  17. k70.p16 =  (unsigned) malloc(32+k70.p12*560);
  18. k70.p20 = 0;
  19.  
  20. /// !!!
  21. // …᫨ ls § ¯ã᪠¥âáï ¡¥§ ¯ à ¬¥â஢, ¯à®á¬ âਢ ¥¬ ⥪ã騩 ª â «®£
  22. if ( !strlen(dir) )
  23.         k70.p21 = cur_dir;
  24. else
  25.         k70.p21 = dir;
  26.  
  27. result = kol_file_70(&k70);
  28. if ( !((result==0) || (result==6)) ) // ¯à®¢¥à塞 áãé¥á⢮¢ ­¨¥ ª â «®£ 
  29.         {
  30.         free( (void*) k70.p16);
  31.         return FALSE;
  32.         }
  33.  
  34. n =  (unsigned*) (k70.p16+8);
  35. num_of_file = *n; // ç¨á«® ä ©«®¢ ¢ ª â «®£¥
  36.  
  37. // now read full directory
  38. k70.p12 = num_of_file;  
  39. free( (void*) k70.p16);
  40. k70.p16 =  (unsigned) malloc(32+k70.p12*560);
  41. if ( !k70.p16 )
  42.         return FALSE;
  43.        
  44. result = kol_file_70(&k70);
  45. if ( !((result==0) || (result==6)) )
  46.         {
  47.         free( (void*) k70.p16);
  48.         return FALSE;
  49.         }
  50.  
  51. for (i = 0; i < num_of_file; i++)
  52.         {
  53.         printf ("  %s", k70.p16+32+40+(264+40)*i);
  54.         t =  (unsigned*) (k70.p16+32+(264+40)*i);
  55.         type_of_file = *t;
  56.         if ( (0x10 == (type_of_file&0x10)) || (8 == (type_of_file&8)) )
  57.                 printf ("/");
  58.         printf ("\n\r");
  59.         }
  60.  
  61. free((void*)k70.p16);
  62. return TRUE;
  63. }
  64.  
  65.