summaryrefslogtreecommitdiff
path: root/cpio.c
diff options
context:
space:
mode:
Diffstat (limited to 'cpio.c')
-rw-r--r--cpio.c85
1 files changed, 85 insertions, 0 deletions
diff --git a/cpio.c b/cpio.c
index d8be243..5aaae0f 100644
--- a/cpio.c
+++ b/cpio.c
@@ -24,10 +24,12 @@
#define _XOPEN_SOURCE 700
#include <cpio.h>
+#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
+#include <unistd.h>
#include "pax.h"
@@ -112,3 +114,86 @@ int cpio_list(FILE *input, size_t firstlen, void *firstblock)
return 0;
}
+
+int cpio_main(int argc, char *argv[])
+{
+ setlocale(LC_ALL, "");
+ int c;
+
+ while ((c = getopt(argc, argv, "oip")) != -1) {
+ switch (c) {
+ case 'o':
+ // create
+ break;
+
+ case 'i':
+ // extract
+ break;
+
+ case 'p':
+ // copy?
+ break;
+
+ default:
+ return 1;
+ }
+
+ break;
+ }
+
+ for (size_t i = 2; argv[optind][i] != '\0'; i++) {
+ printf("checking %c\n", argv[optind][i]);
+ switch (argv[optind][i]) {
+ case 'a':
+ // reset atimes
+ break;
+
+ case 'B':
+ // blocksize 5120
+ break;
+
+ case 'd':
+ // create directories
+ break;
+
+ case 'c':
+ // read and write in character form for portability
+ break;
+
+ case 'r':
+ // interactively rename files
+ break;
+
+ case 't':
+ // list table of contents
+ break;
+
+ case 'u':
+ // copy unconditionally
+ break;
+
+ case 'v':
+ // verbose
+ break;
+
+ case 'l':
+ // link instead of copy, requires -p
+ break;
+
+ case 'm':
+ // reset mtime
+ break;
+
+ case 'f':
+ // ignore files in pattern
+ break;
+
+ default:
+ fprintf(stderr, "cpio: unknown option '%c'\n",
+ argv[optind][i]);
+ return 1;
+ }
+ }
+
+ return 0;
+}