aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile1
-rw-r--r--src/c_opts.c83
-rw-r--r--src/c_opts.h60
-rw-r--r--src/c_unixize.c23
-rw-r--r--src/c_unixize.h9
5 files changed, 171 insertions, 5 deletions
diff --git a/Makefile b/Makefile
index 4d851a7..a27e1b0 100644
--- a/Makefile
+++ b/Makefile
@@ -34,6 +34,7 @@ RM = rm -rf
MKDIR = mkdir -p
SRCS_NAME = c_unixize
+SRCS_NAME += c_opts
SRCS = $(addprefix ${SRCS_DIR}, $(addsuffix .c, ${SRCS_NAME}))
INCS = $(addprefix ${SRCS_DIR}, $(addsuffix .h, ${SRCS_NAME}))
diff --git a/src/c_opts.c b/src/c_opts.c
new file mode 100644
index 0000000..886c10e
--- /dev/null
+++ b/src/c_opts.c
@@ -0,0 +1,83 @@
+/*
+ * ========================
+ * ===== ===============
+ * ====== ================
+ * ====== ================
+ * ====== ==== ==== ==
+ * ====== === == = =
+ * ====== === = == =
+ * = === === = == ====
+ * = === === = == = =
+ * == ===== ==== ==
+ * ========================
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 2020 Joe
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the organization nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY JOE ''AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL JOE BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * unixize: src/c_opts.c
+ * 2020-11-02 23:37
+ * Joe
+ *
+ * This is where we handle command line options
+ */
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <stdio.h>
+
+#include "c_opts.h"
+
+void
+c_opts
+(struct opts_s* opts,
+ int argc,
+ const char* argv[])
+{
+ int opt;
+
+ opts->recursive = FALSE;
+ opts->verbose = FALSE;
+ while ((opt = getopt(argc, (char *const *)argv, C_OPTS)) != -1) {
+ if (opt == 'R') {
+ opts->recursive = TRUE;
+ }
+ else if (opt == 'v') {
+ opts->verbose = TRUE;
+ }
+ else if (opt == '?') {
+ dprintf(
+ STDERR_FILENO,
+ "unixize: %c: unknown option\n",
+ optopt
+ );
+ exit(1);
+ }
+ }
+ if (optind < argc && argv[optind] != NULL) {
+ printf("arg: %s\n", argv[optind]);
+ }
+}
diff --git a/src/c_opts.h b/src/c_opts.h
new file mode 100644
index 0000000..a63e898
--- /dev/null
+++ b/src/c_opts.h
@@ -0,0 +1,60 @@
+/*
+ * ========================
+ * ===== ===============
+ * ====== ================
+ * ====== ================
+ * ====== ==== ==== ==
+ * ====== === == = =
+ * ====== === = == =
+ * = === === = == ====
+ * = === === = == = =
+ * == ===== ==== ==
+ * ========================
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 2020 Joe
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the organization nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY JOE ''AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL JOE BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * unixize: src/c_opts.h
+ * 2020-11-02 23:37
+ * Joe
+ *
+ * This is where we handle command line options
+ */
+
+#ifndef __C_OPTS_H__
+#define __C_OPTS_H__ value
+
+#include "c_unixize.h"
+
+struct opts_s {
+ bool_t recursive;
+ bool_t verbose;
+};
+
+void c_opts(struct opts_s*, int, const char*[]);
+
+#endif /* ifndef __C_OPTS_H__ */
diff --git a/src/c_unixize.c b/src/c_unixize.c
index 84985b8..3e16ecd 100644
--- a/src/c_unixize.c
+++ b/src/c_unixize.c
@@ -45,11 +45,27 @@
* This is the main function and entrypoint of the program.
*/
+/* #ifdef __linux__ */
+/* # include <linux/limits.h> */
+/* #else */
+/* # include <limits.h> */
+/* #endif */
+#include <stdio.h>
+
+#include "c_opts.h"
+
int
-main(int argc, const char *argv[])
+main
+(int argc,
+ const char* argv[])
{
- (void)argc;
- (void)argv;
+ struct opts_s opts;
+
+ c_opts(&opts, argc, argv);
+ if (opts.recursive == TRUE)
+ printf("Recursive\n");
+ if (opts.verbose == TRUE)
+ printf("Verbose\n");
return (0);
}
@@ -57,5 +73,4 @@ main(int argc, const char *argv[])
* Files prefixes index
* --------------------
* c_ -> core program related
- *
*/
diff --git a/src/c_unixize.h b/src/c_unixize.h
index c7de6cb..4447c81 100644
--- a/src/c_unixize.h
+++ b/src/c_unixize.h
@@ -39,11 +39,18 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* unixize: src/c_unixize.h
- * 2020-11-02 22:14
+ * 2020-11-02 23:07
* Joe
*/
#ifndef __C_UNIXIZE_H__
#define __C_UNIXIZE_H__
+#define C_OPTS ":Rv"
+
+typedef enum bool_e {
+ FALSE,
+ TRUE
+} bool_t;
+
#endif /* ifndef __C_UNIXIZE_H__ */