diff --git a/.gitignore b/.gitignore index 62a2664e..208e952a 100644 --- a/.gitignore +++ b/.gitignore @@ -27,5 +27,6 @@ programs/pwd/pwd programs/which/which programs/readelf/readelf programs/touch/touch -programs/cd/cd +programs/mkdir/mkdir +programs/rm/rm programs/dist/ \ No newline at end of file diff --git a/programs/Makefile b/programs/Makefile index 43d514de..2741b29c 100644 --- a/programs/Makefile +++ b/programs/Makefile @@ -1,6 +1,6 @@ .PHONY: dist default clean force_look -PROGRAMS=one hello long loop longone longtwo keyboard tsh cpuid shutdown reboot args stat cat which readelf touch mkdir +PROGRAMS=one hello long loop longone longtwo keyboard tsh cpuid shutdown reboot args stat cat which readelf touch mkdir rm default: dist diff --git a/programs/mkdir/mkdir b/programs/mkdir/mkdir deleted file mode 100755 index 45718509..00000000 Binary files a/programs/mkdir/mkdir and /dev/null differ diff --git a/programs/rm/Makefile b/programs/rm/Makefile new file mode 100644 index 00000000..c1384ea3 --- /dev/null +++ b/programs/rm/Makefile @@ -0,0 +1,15 @@ +.PHONY: default clean + +default: rm + +include ../../cpp.mk + +%.cpp.o: src/%.cpp + $(CC) -c $< -o $@ $(PROGRAM_FLAGS) + +rm: main.cpp.o + $(CC) -o rm main.cpp.o $(PROGRAM_LINK_FLAGS) + +clean: + rm -f *.cpp.o + rm -rf rm diff --git a/programs/rm/src/main.cpp b/programs/rm/src/main.cpp new file mode 100644 index 00000000..28d1e1fb --- /dev/null +++ b/programs/rm/src/main.cpp @@ -0,0 +1,35 @@ +//======================================================================= +// Copyright Baptiste Wicht 2013-2014. +// Distributed under the Boost Software License, Version 1.0. +// (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +//======================================================================= + +#include +#include +#include +#include +#include + +int main(int argc, char* argv[]){ + if(argc == 1){ + print_line("Usage: rm file_path"); + exit(1); + } + + auto fd = open(argv[1]); + + if(fd.valid()){ + auto result = rm(argv[1]); + + if(result < 0){ + printf("rm: error: %s\n", std::error_message(-result)); + } + + close(*fd); + } else { + printf("rm: error: %s\n", std::error_message(fd.error())); + } + + exit(0); +} \ No newline at end of file