Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- char* run_lstat(int sockfd){
- char line[42] = "Type the file you wish to get info about\n\0";
- char* all_files = run_ls();
- char* token = strtok(all_files, "\t");
- char* msg = malloc(512); // i had to use this since i
- memset(msg, '\0', 512);
- int offset = 0;
- do{
- if(token[0] != '\n'){
- // realloc(msg, strlen(token)+2);
- msg = strcat(msg, token);
- msg = strcat(msg, "\n");
- offset += (strlen(token)+1);
- }
- fprintf(stderr, "token = %s\n", token);
- fprintf(stderr, "msg = %s\n", msg);
- }while((token = strtok(NULL, "\t")) != NULL);
- fprintf(stderr, "msg = |%s|\n", msg);
- msg = strcat(msg, line);
- if(write_on_roids(sockfd, msg) == -1){
- perror("OOPS! something went wrong: ");
- exit(EXIT_FAILURE);
- }
- memset(msg, '\0', 512);
- free(all_files);
- state = read_state;
- msg = read_on_roids(sockfd);
- msg[strlen(msg)-1] = '\0'; // remove \n
- state = write_state;
- all_files = run_ls();
- token = strtok(all_files, "\t");
- do{
- if(!strcmp(msg, token)) break;
- }while((token = strtok(NULL, "\t")) != NULL);
- if(token == NULL) return msg = strcpy(msg, "could not find file, try again");
- // free(msg);
- struct stat buf;
- memset(msg, '\0', 512);
- strcat(msg, currentDir);
- strcat(msg, "/");
- strcat(msg, token);
- lstat(msg, &buf);
- if(S_ISREG(buf.st_mode) != 0){
- return msg = strcpy(msg, "is a regular file\n\0");
- } else if(S_ISDIR(buf.st_mode) != 0){
- return msg = strcpy(msg, "is a directory\n\0");
- } else if(S_ISCHR(buf.st_mode) != 0){
- return msg = strcpy(msg, "is a character device\n\0");
- } else if(S_ISBLK(buf.st_mode) != 0){
- return msg = strcpy(msg, "is a block device\n\0");
- } else if(S_ISFIFO(buf.st_mode) != 0){
- return msg = strcpy(msg, "is a named pipe\n\0");
- } else {
- return msg = strcpy(msg, "didnt recognice file\n\0");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement