int ls_main( int argc, char **argv ) { char *node = NULL; if ( argc == 1 ) node = strdup("/"); if ( argc == 2 ) node = strdup( argv[1] ); if ( node == NULL ) return -1; Directory *dir = new Directory( node ); if ( dir->Exists() == false ) { printf("%s\n","directory does not exist."); } char *front = (char*)malloc( strlen(node) + 2 ); strcpy( front, node ); if ( front[strlen(front) - 1] != '/' ) strcat( front, "/" ); char *entry = NULL; while ((entry = dir->NextEntry()) != NULL ) { char *complete = (char*)malloc(strlen(front) + strlen(entry) + 5 ); strcpy( complete, front ); strcat( complete, entry ); int size = -1; File *temp = new File( complete ); if ( temp->Open() >= 0 ) { size = temp->Size(); temp->Close(); } delete temp; printf("%5s%10i %s\n", ". ", size, entry ); free( complete ); } free( front ); printf("%i%s\n", dir->CountEntries(), " files."); delete dir; free( node ); return 0; }
bool CommanderWindow::Refresh() { cleanPath(); list->Empty(); const char *path = input->Text(); Directory *dir = new Directory( path ); if ( dir->Exists() == false ) { delete dir; Draw( Bounds() ); return false; } char *entry = NULL; while ((entry = dir->NextEntry()) != NULL ) { char *complete = (char*)malloc( strlen(path) + strlen(entry) + 2 ); strcpy( complete, path ); strcat( complete, entry ); int size = -1; File *temp = new File( complete ); if ( temp->Open() >= 0 ) { size = temp->Size(); temp->Close(); } delete temp; list->AddItem( new StringItem( entry ) ); free( complete ); } Draw( Bounds() ); delete dir; return true; }