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

Implements cd and pwd

parent 31965a48
No related branches found
No related tags found
No related merge requests found
#include <stdio.h>
#include <string.h> #include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <linux/limits.h>
#include "commands.h" #include "commands.h"
int do_cd(int argc, char** argv) { int do_cd(int argc, char** argv) {
if (!validate_cd_argv(argc, argv)) if (!validate_cd_argv(argc, argv))
return -1; return -1;
// TODO: Fill it! if (chdir(argv[1]) == -1)
return -1;
return 0; return 0;
} }
...@@ -14,17 +22,31 @@ int do_pwd(int argc, char** argv) { ...@@ -14,17 +22,31 @@ int do_pwd(int argc, char** argv) {
if (!validate_pwd_argv(argc, argv)) if (!validate_pwd_argv(argc, argv))
return -1; return -1;
// TODO: Fill it! char curdir[PATH_MAX];
if (getcwd(curdir, PATH_MAX) == NULL)
return -1;
printf("%s\n", curdir);
return 0; return 0;
} }
int validate_cd_argv(int argc, char** argv) { int validate_cd_argv(int argc, char** argv) {
// TODO: Fill it! if (argc != 2) return 0;
if (strcmp(argv[0], "cd") != 0) return 0;
struct stat buf;
stat(argv[1], &buf);
if (!S_ISDIR(buf.st_mode)) return 0;
return 1; return 1;
} }
int validate_pwd_argv(int argc, char** argv) { int validate_pwd_argv(int argc, char** argv) {
// TODO: Fill it! if (argc != 1) return 0;
if (strcmp(argv[0], "pwd") != 0) return 0;
return 1; return 1;
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment