59 lines
1.3 KiB
C
Raw Normal View History

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <ctype.h>
#include "nms.h"
#define VERSION "0.1.0"
#define INPUT_GROWTH_FACTOR 2
int main(int argc, char *argv[]) {
int c, o, inSize = 0, inCapacity = 0;
char *input = NULL;
NmsArgs args = INIT_NMSARGS;
// Processing command arguments
while ((o = getopt(argc, argv, "f:av")) != -1) {
switch (o) {
case 'f':
args.foreground_color = getColorByName(optarg, args.foreground_color);
break;
case 'a':
args.auto_decrypt = true;
break;
case 'v':
printf("nms version " VERSION "\n");
return 0;
case '?':
if (isprint(optopt))
fprintf (stderr, "Unknown option '-%c'.\n", optopt);
else
fprintf (stderr, "Unknown option character '\\x%x'.\n", optopt);
return 1;
}
}
// Geting input
while ((c = getchar()) != EOF) {
++inSize;
if (inSize > inCapacity) {
inCapacity = inCapacity == 0 ? INPUT_GROWTH_FACTOR : inCapacity * INPUT_GROWTH_FACTOR;
input = realloc(input, inCapacity + 1);
}
input[inSize - 1] = c;
input[inSize] = '\0';
}
// Set needed args
args.src = input;
args.show_cursor = true;
// Display characters
nms_exec(&args);
// Don't forget to free the allocated memory!
free(input);
return 0;
}