#include "input.h"
* Parses size count and number of lines.
*/
static int parse_s(wchar_t *param) {
wchar_t * pos = wcschr(param, 'x');
if (pos == NULL) {
int n = _wtoi(param);
if (n < 1) {
fprintf(stderr, "an invalid argument supplied for -s\n");
return 0;
}
parameters.count = n;
parameters.lines = 1;
return 1;
}
wchar_t *c_lines = pos + 1;
wchar_t *c_count = malloc(wcslen(param) - wcslen(c_lines) - 1);
wcsncpy_s(c_count, wcslen(param) - wcslen(c_lines), param, _TRUNCATE);
int n;
n = _wtoi(c_count);
if (n < 1) {
fprintf(stderr, "invalid length specified for -s\n");
}
parameters.count = n;
n = _wtoi(c_lines);
if (n < 1) {
fprintf(stderr, "invalid lines number specified for -s\n");
}
parameters.lines = n;
return 1;
}
* Parses input options and arguments.
*/
int ParseParameters(int argc, wchar_t * argv[]) {
int set = 0;
int res = 1;
for (int i = 0; res && i < argc; i++) {
if ((set & 1) == 0 && wcsncmp(argv[i], L"-s", 2) == 0) {
set |= 1;
if (wcslen(argv[i]) > 2) {
res = parse_s(argv[i] + 2);
} else if (i + 1 < argc) {
res = parse_s(argv[++i]);
} else {
fwprintf(stderr, L"no argument specified for -s\n");
res = 0;
}
} else if (wcscmp(argv[i], L"-h") == 0 || wcscmp(argv[i], L"--help") == 0) {
res = 0;
} else if ((set & 2) == 0) {
set |= 2;
res = ParseList(argv[i]);
} else {
fwprintf(stderr, L"unknown argument %s\n", argv[i]);
res = 0;
}
}
return res;
}