Skip to content
Snippets Groups Projects
Commit 482c8cdc authored by Jaewon Choi's avatar Jaewon Choi
Browse files

Ready to implement cd and pwd commands

parent 96085988
No related branches found
No related tags found
No related merge requests found
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
CC=gcc -std=c99 CC=gcc -std=c99
CFLAGS=-I./src -I./include CFLAGS=-I./src -I./include
LIB= LIB=
OBJ=./src/utils.o OBJ=./src/utils.o ./src/commands.o
%.o: %.c $(DEPS) %.o: %.c $(DEPS)
$(CC) -c -o $@ $< $(CFLAGS) $(CC) -c -o $@ $< $(CFLAGS)
......
#ifndef MYSH_COMMANDS_H_
#define MYSH_COMMANDS_H_
int do_cd(int argc, char** argv);
int do_pwd(int argc, char** argv);
int validate_cd_argv(int argc, char** argv);
int validate_pwd_argv(int argc, char** argv);
#endif // MYSH_COMMANDS_H_
#include <string.h>
#include "commands.h"
int do_cd(int argc, char** argv) {
if (!validate_cd_argv(argc, argv))
return -1;
// TODO: Fill it!
return 0;
}
int do_pwd(int argc, char** argv) {
if (!validate_pwd_argv(argc, argv))
return -1;
// TODO: Fill it!
return 0;
}
int validate_cd_argv(int argc, char** argv) {
// TODO: Fill it!
}
int validate_pwd_argv(int argc, char** argv) {
// TODO: Fill it!
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "commands.h"
#include "utils.h"
int main() int main()
{ {
char buf[8096];
int argc;
char** argv;
// initialize command buffer
argv = (char**)malloc(32);
for (int i = 0; i < 32; ++i) {
argv[i] = (char*)malloc(8096);
}
while (1) {
fgets(buf, 8096, stdin);
mysh_parse_command(buf, &argc, argv);
if (strcmp(buf, "") == 0) {
continue;
} else if (strcmp(argv[0], "cd") == 0) {
do_cd(argc, argv);
} else if (strcmp(argv[0], "pwd") == 0) {
do_pwd(argc, argv);
} else if (strcmp(argv[0], "exit") == 0) {
break;
} else {
fprintf(stderr, "%s: command not found\n", argv[0]);
}
}
// destroy command buffer
for (int i = 0; i < 32; ++i) {
free(argv[i]);
}
free(argv);
return 0; return 0;
} }
...@@ -84,7 +84,7 @@ TEST(CommandParsingTest, EmptyCommand) { ...@@ -84,7 +84,7 @@ TEST(CommandParsingTest, EmptyCommand) {
char** argv = alloc_string_array(1, 1024); char** argv = alloc_string_array(1, 1024);
int argc = -1; int argc = -1;
mysh_parse_command("", &argc, argv); mysh_parse_command(" \n \t ", &argc, argv);
EXPECT_EQ(argc, 1); EXPECT_EQ(argc, 1);
EXPECT_STREQ(argv[0], ""); EXPECT_STREQ(argv[0], "");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment