Compare commits
	
		
			No commits in common. "ae0a2c04303be29b02c2eaf35de73970c06cbab9" and "049405989b684ebf5c4c5ae4324b6de5488039c5" have entirely different histories.
		
	
	
		
			ae0a2c0430
			...
			049405989b
		
	
		
							
								
								
									
										4
									
								
								config.h
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								config.h
									
									
									
									
									
								
							@ -14,9 +14,9 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* CLI config section */
 | 
			
		||||
#define CLI_MAX_LINE_LENGTH 1024
 | 
			
		||||
#define CLI_MAX_LINE_LENGTH 256
 | 
			
		||||
#define CLI_MAX_ACCEPTED_ARGS 4
 | 
			
		||||
#define CLI_MAX_TOKEN_LENGTH 256
 | 
			
		||||
#define CLI_MAX_TOKEN_LENGTH 64
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* FS config section */
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										14
									
								
								src/cli.c
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								src/cli.c
									
									
									
									
									
								
							@ -9,7 +9,6 @@
 | 
			
		||||
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static const struct CliCommandEntry cmd[] = {
 | 
			
		||||
@ -209,11 +208,11 @@ abandon_struct:
 | 
			
		||||
 | 
			
		||||
unsigned int cli_poll_process_next(void)
 | 
			
		||||
{
 | 
			
		||||
	int echo_commands = !isatty(STDIN_FILENO);
 | 
			
		||||
 | 
			
		||||
	for ( ;; ) {
 | 
			
		||||
		fputs(fs_get_cwd(), stdout);
 | 
			
		||||
 | 
			
		||||
		if (fs_get_cwd()[0]) {
 | 
			
		||||
			printf("%s $ ", fs_get_cwd());
 | 
			
		||||
			printf(" $ ");
 | 
			
		||||
		} else {
 | 
			
		||||
			printf("$ ");
 | 
			
		||||
		}
 | 
			
		||||
@ -222,13 +221,8 @@ unsigned int cli_poll_process_next(void)
 | 
			
		||||
		char *line = NULL;
 | 
			
		||||
 | 
			
		||||
		ssize_t result = getline(&line, &buf_size, stdin);
 | 
			
		||||
		if (result == -1) {
 | 
			
		||||
			printf("\n");
 | 
			
		||||
		if (result == -1)
 | 
			
		||||
			return 0x1;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (echo_commands)
 | 
			
		||||
			printf(line);
 | 
			
		||||
 | 
			
		||||
		char **tokenized_line = tokenize_line(line, result);
 | 
			
		||||
		free(line);
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										73
									
								
								src/fs.c
									
									
									
									
									
								
							
							
						
						
									
										73
									
								
								src/fs.c
									
									
									
									
									
								
							@ -998,8 +998,6 @@ static void resolve_path(struct resolved_path * const rp, const char * const ori
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				pr("Found symlink '%s', following (-> '%s')\n", next_fname, symlink_path);
 | 
			
		||||
 | 
			
		||||
				if (symlink_path[0] == '/') {
 | 
			
		||||
					memmove(&(path[symlink_path_len]), &(path[i+1]), path_len-i-1);
 | 
			
		||||
					strcpy(path, &(symlink_path[1]));
 | 
			
		||||
@ -1023,7 +1021,6 @@ static void resolve_path(struct resolved_path * const rp, const char * const ori
 | 
			
		||||
				}
 | 
			
		||||
			} else {
 | 
			
		||||
				if (!(params & FOLLOW_LAST_SYMLINK)) {
 | 
			
		||||
					pr("Stopping at symlink '%s', not following\n", next_fname);
 | 
			
		||||
					rp->target_inode_ptr = res;
 | 
			
		||||
					strcpy(rp->parent_fname, current_fname);
 | 
			
		||||
					strcpy(rp->target_fname, next_fname);
 | 
			
		||||
@ -1048,8 +1045,6 @@ static void resolve_path(struct resolved_path * const rp, const char * const ori
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				pr("Found symlink '%s' at last position, following (-> '%s')\n", next_fname, symlink_path);
 | 
			
		||||
 | 
			
		||||
				if (!strcmp(symlink_path, "/")) {
 | 
			
		||||
					rp->parent_inode_ptr = 0;
 | 
			
		||||
					rp->target_inode_ptr = 0;
 | 
			
		||||
@ -1083,7 +1078,6 @@ static void resolve_path(struct resolved_path * const rp, const char * const ori
 | 
			
		||||
				rp->target_inode_ptr = -1;
 | 
			
		||||
				break;
 | 
			
		||||
			} else {
 | 
			
		||||
				pr("Stopping at regular file '%s'\n", next_fname);
 | 
			
		||||
				rp->target_inode_ptr = res;
 | 
			
		||||
				strcpy(rp->parent_fname, current_fname);
 | 
			
		||||
				strcpy(rp->target_fname, next_fname);
 | 
			
		||||
@ -1098,7 +1092,6 @@ static void resolve_path(struct resolved_path * const rp, const char * const ori
 | 
			
		||||
				strcpy(current_fname, next_fname);
 | 
			
		||||
				memset(next_fname, 0, FS_MAX_FNAME_LEN);
 | 
			
		||||
			} else {
 | 
			
		||||
				pr("Stopping at directory '%s'\n", next_fname);
 | 
			
		||||
				rp->target_inode_ptr = res;
 | 
			
		||||
				strcpy(rp->parent_fname, current_fname);
 | 
			
		||||
				strcpy(rp->target_fname, next_fname);
 | 
			
		||||
@ -2426,29 +2419,15 @@ int fs_la(void *d)
 | 
			
		||||
			struct fs_inode f_inode;
 | 
			
		||||
			read_block(read_inode_ptr(recs[k].inode_no), (void *) &f_inode);
 | 
			
		||||
 | 
			
		||||
			if (f_inode.ftype == REGULAR) {
 | 
			
		||||
				pr_stdout("%s (inode_ptr=%d -> inode=%d, ref_count=%d, size=%d, type=reg)\n",
 | 
			
		||||
						recs[k].fname, recs[k].inode_no, read_inode_ptr(recs[k].inode_no),
 | 
			
		||||
						f_inode.ref_count, f_inode.size);
 | 
			
		||||
			} else if (f_inode.ftype == DIRECTORY) {
 | 
			
		||||
			if (f_inode.ftype == DIRECTORY) {
 | 
			
		||||
				pr_stdout(COLOR_BLUE "%s" COLOR_RESET
 | 
			
		||||
						" (inode_ptr=%d -> inode=%d, ref_count=%d, size=%d, type=dir)\n",
 | 
			
		||||
						recs[k].fname, recs[k].inode_no, read_inode_ptr(recs[k].inode_no),
 | 
			
		||||
						f_inode.ref_count, f_inode.size);
 | 
			
		||||
			} else if (f_inode.ftype == SYMLINK) {
 | 
			
		||||
				char l_path[FS_MAX_PATH_LEN+1];
 | 
			
		||||
				int l_path_len = read_symlink(recs[k].inode_no, l_path);
 | 
			
		||||
 | 
			
		||||
				if (l_path_len > 0)
 | 
			
		||||
					pr_stdout(COLOR_CYAN "%s" COLOR_RESET
 | 
			
		||||
							" (inode_ptr=%d -> inode=%d, ref_count=%d, size=%d, type=lnk, -> '%s')\n",
 | 
			
		||||
							recs[k].fname, recs[k].inode_no, read_inode_ptr(recs[k].inode_no),
 | 
			
		||||
							f_inode.ref_count, f_inode.size, l_path);
 | 
			
		||||
				else
 | 
			
		||||
					pr_stdout(COLOR_RED "%s" COLOR_RESET
 | 
			
		||||
							" (inode_ptr=%d -> inode=%d, ref_count=%d, size=%d, type=lnk)\n",
 | 
			
		||||
							recs[k].fname, recs[k].inode_no, read_inode_ptr(recs[k].inode_no),
 | 
			
		||||
							f_inode.ref_count, f_inode.size);
 | 
			
		||||
			} else {
 | 
			
		||||
				pr_stdout("%s (inode_ptr=%d -> inode=%d, ref_count=%d, size=%d, type=reg)\n",
 | 
			
		||||
						recs[k].fname, recs[k].inode_no, read_inode_ptr(recs[k].inode_no),
 | 
			
		||||
						f_inode.ref_count, f_inode.size);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
@ -2475,29 +2454,15 @@ int fs_la(void *d)
 | 
			
		||||
				struct fs_inode f_inode;
 | 
			
		||||
				read_block(read_inode_ptr(recs[k].inode_no), (void *) &f_inode);
 | 
			
		||||
 | 
			
		||||
				if (f_inode.ftype == REGULAR) {
 | 
			
		||||
					pr_stdout("%s (inode_ptr=%d -> inode=%d, ref_count=%d, size=%d, type=reg)\n",
 | 
			
		||||
							recs[k].fname, recs[k].inode_no, read_inode_ptr(recs[k].inode_no),
 | 
			
		||||
							f_inode.ref_count, f_inode.size);
 | 
			
		||||
				} else if (f_inode.ftype == DIRECTORY) {
 | 
			
		||||
				if (f_inode.ftype == DIRECTORY) {
 | 
			
		||||
					pr_stdout(COLOR_BLUE "%s" COLOR_RESET
 | 
			
		||||
							" (inode_ptr=%d -> inode=%d, ref_count=%d, size=%d, type=dir)\n",
 | 
			
		||||
							recs[k].fname, recs[k].inode_no, read_inode_ptr(recs[k].inode_no),
 | 
			
		||||
							f_inode.ref_count, f_inode.size);
 | 
			
		||||
				} else if (f_inode.ftype == SYMLINK) {
 | 
			
		||||
					char l_path[FS_MAX_PATH_LEN+1];
 | 
			
		||||
					int l_path_len = read_symlink(recs[k].inode_no, l_path);
 | 
			
		||||
 | 
			
		||||
					if (l_path_len > 0)
 | 
			
		||||
						pr_stdout(COLOR_CYAN "%s" COLOR_RESET
 | 
			
		||||
								" (inode_ptr=%d -> inode=%d, ref_count=%d, size=%d, type=lnk, -> '%s')\n",
 | 
			
		||||
								recs[k].fname, recs[k].inode_no, read_inode_ptr(recs[k].inode_no),
 | 
			
		||||
								f_inode.ref_count, f_inode.size, l_path);
 | 
			
		||||
					else
 | 
			
		||||
						pr_stdout(COLOR_RED "%s" COLOR_RESET
 | 
			
		||||
								" (inode_ptr=%d -> inode=%d, ref_count=%d, size=%d, type=lnk)\n",
 | 
			
		||||
								recs[k].fname, recs[k].inode_no, read_inode_ptr(recs[k].inode_no),
 | 
			
		||||
								f_inode.ref_count, f_inode.size);
 | 
			
		||||
				} else {
 | 
			
		||||
					pr_stdout("%s (inode_ptr=%d -> inode=%d, ref_count=%d, size=%d, type=reg)\n",
 | 
			
		||||
							recs[k].fname, recs[k].inode_no, read_inode_ptr(recs[k].inode_no),
 | 
			
		||||
							f_inode.ref_count, f_inode.size);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
@ -2521,22 +2486,12 @@ int fs_stat(void *d)
 | 
			
		||||
	struct fs_inode i;
 | 
			
		||||
	read_block(read_inode_ptr(rp.target_inode_ptr), &i);
 | 
			
		||||
 | 
			
		||||
	if (i.ftype == REGULAR) {
 | 
			
		||||
		pr_stdout("inode_ptr=%d -> inode=%d\nref_count=%d\nsize=%d\ntype=regular\n",
 | 
			
		||||
	if (i.ftype == DIRECTORY) {
 | 
			
		||||
		pr_stdout("inode_ptr=%d -> inode=%d\nref_count=%d\nsize=%d\ntype=dir\n",
 | 
			
		||||
				rp.target_inode_ptr, read_inode_ptr(rp.target_inode_ptr), i.ref_count, i.size);
 | 
			
		||||
	} else if (i.ftype == DIRECTORY) {
 | 
			
		||||
		pr_stdout("inode_ptr=%d -> inode=%d\nref_count=%d\nsize=%d\ntype=directory\n",
 | 
			
		||||
	} else {
 | 
			
		||||
		pr_stdout("inode_ptr=%d -> inode=%d\nref_count=%d\nsize=%d\ntype=reg\n",
 | 
			
		||||
				rp.target_inode_ptr, read_inode_ptr(rp.target_inode_ptr), i.ref_count, i.size);
 | 
			
		||||
	} else if (i.ftype == SYMLINK) {
 | 
			
		||||
		char l_path[FS_MAX_PATH_LEN+1];
 | 
			
		||||
		int l_path_len = read_symlink(rp.target_inode_ptr, l_path);
 | 
			
		||||
		if (l_path_len > 0) {
 | 
			
		||||
			pr_stdout("inode_ptr=%d -> inode=%d\nref_count=%d\nsize=%d\ntype=symlink\npoints to: %s\n",
 | 
			
		||||
					rp.target_inode_ptr, read_inode_ptr(rp.target_inode_ptr), i.ref_count, i.size, l_path);
 | 
			
		||||
		} else {
 | 
			
		||||
			pr_stdout("inode_ptr=%d -> inode=%d\nref_count=%d\nsize=%d\ntype=symlink\n<broken>\n",
 | 
			
		||||
					rp.target_inode_ptr, read_inode_ptr(rp.target_inode_ptr), i.ref_count, i.size);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user