First commit
[mutos-utils.git] / echo.c
bloba84e791852e299718f997744c78cd546bb5f94c2
1 #include <stdio.h>
2 #include <string.h>
3 #include <stdlib.h>
4 #include <stdbool.h>
6 #define VERSION "0.01"
8 struct {
9 bool escape;
10 bool newline;
11 } flags;
13 void usage(char *program)
15 printf("Usage: %s [flags] [string ...]]\n", program);
16 printf("\t-e, --escape\t\t parse escape characters.\n");
17 printf("\t-n, --no-newline\t don't print a finishing newline.\n");
18 printf("\n");
19 printf("\t-h, --help\t\t print program help (this message).\n");
20 printf("\t-v, --version\t\t print program name and version.\n");
23 int main(int argc, char* argv[])
25 // flags init
26 flags.escape = false;
27 flags.newline = false;
30 // flag parsing
31 int i;
32 for (i = 1; i < argc; i++) {
33 if (strcmp(argv[i], "-e") == 0 || strcmp(argv[i], "--escape") == 0) {
34 flags.escape = true;
35 } else if (strcmp(argv[i], "-n") == 0 || strcmp(argv[i], "--no-newline") == 0) {
36 flags.newline = true;
37 } else if (strcmp(argv[i], "-h") == 0 || strcmp(argv[i], "--help") == 0) {
38 usage(argv[0]);
39 return 0;
40 } else if (strcmp(argv[i], "-v") == 0 || strcmp(argv[i], "--version") == 0) {
41 printf("echo (mutos) v"VERSION"\n");
42 return 0;
43 } else {
44 // done parsing arguments
45 break;
49 // reuse i from previous loop to continue where we left off
50 for (; i < argc; i++) {
53 return 0;