diff options
| -rw-r--r-- | Makefile | 6 | ||||
| -rwxr-xr-x | a.out | bin | 16672 -> 0 bytes | |||
| -rwxr-xr-x | fileutil | bin | 16672 -> 0 bytes | |||
| -rw-r--r-- | fileutil.c | 55 | ||||
| -rw-r--r-- | fileutil.h | 11 | ||||
| -rw-r--r-- | fileutil.o | bin | 1848 -> 0 bytes | |||
| -rw-r--r-- | logfile.txt | 7 |
7 files changed, 65 insertions, 14 deletions
@@ -1,9 +1,13 @@ +OUTPUT = fileutil OBJS = fileutil.o CC = gcc CFLAGS = -Wall -c all: $(OBJS) - $(CC) $(OBJS) -o fileutil + $(CC) $(OBJS) -o $(OUTPUT) fileutil.o: fileutil.c fileutil.h $(CC) $(CFLAGS) fileutil.c + +clean: + rm $(OUTPUT) $(OBJS)
\ No newline at end of file Binary files differdiff --git a/fileutil b/fileutil Binary files differdeleted file mode 100755 index 5186573..0000000 --- a/fileutil +++ /dev/null @@ -1,17 +1,60 @@ +/* + * fileutil.c + * + * Alexander Occhipinti + * Student ID: 29994705 + * Created: 3 Sep 2020 + * Last Modified: 3 Sep 2020 + * + * fileutil is a program which is a utility for files. It combines the functionality of cat cp and mv. + * This program allows you to copy the contents of a given file to stdout or to a another file. + * It also allows you to delete the original (i.e. mv) if you please. + * +*/ + #include <unistd.h> +#include <sys/file.h> +#include <stdlib.h> #include "fileutil.h" +#define FILE_BUF_SIZE 1024 +/* + * Prints a given string to stdout. Returns nothing. +*/ +void to_stdout(char *string) { + write(1, string, sizeof(string)); +} -void to_stdout(char *string, ssize_t size) { - write(0, string, size); +/* + * Prints a given string to stderr. Returns nothing. +*/ +void to_stderr(char *string) { + write(2, string, sizeof(string)); } -void to_stderr(char *string, ssize_t size) { - write(1, string, size); +/* + * Prints the contents of a given file (provided a path) to stdout. + * Returns nothing. +*/ +void print_file(char *read_path) { + int infile, bytes_read; + + // Read the input file + if ((infile = open(read_path, O_RDONLY)) <= 2){ + to_stderr(read_path); + exit(1); // Exit if an error occurs + } + + // Write contents to stdout using a buffer + char buffer[FILE_BUF_SIZE]; + while ((bytes_read = read(infile, buffer, FILE_BUF_SIZE))) { + write(1, buffer, bytes_read); + } + + close(infile); } int main(int argc, char const *argv[]) { - /* code */ - to_stdout("Testing\n", 9); + print_file("logfile.txt"); return 0; } @@ -1,2 +1,9 @@ -void to_stdout(char *string, ssize_t size); -int main(int argc, char const *argv[]);
\ No newline at end of file +#ifndef _FILEUTIL_H +#define _FILEUTIL_H + +void to_stdout(char *string); +void to_stderr(char *string); +void print_file(char *read_path); +int main(int argc, char const *argv[]); + +#endif
\ No newline at end of file diff --git a/fileutil.o b/fileutil.o Binary files differdeleted file mode 100644 index df6344a..0000000 --- a/fileutil.o +++ /dev/null diff --git a/logfile.txt b/logfile.txt index 49f9c6f..05aae31 100644 --- a/logfile.txt +++ b/logfile.txt @@ -1,5 +1,2 @@ -aisoyudg iasd -'asdj haksjd -a DJK AHS GH - ASKDJHA SD - sds s s sf s s s s
\ No newline at end of file +12345678901234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ +nsdfggdfdgfd dfgdfgd dfgdfg dfgdgfdfg dgf dgf dfg dfg
\ No newline at end of file |
