Run uncrustify on an imported source file
diff --git a/compat/strptime.c b/compat/strptime.c
index 47f9564..38e9d03 100644
--- a/compat/strptime.c
+++ b/compat/strptime.c
@@ -5,167 +5,209 @@
* commit 98e688a9da5e7b2925dda17a2d6820dddf1fb287.
*
* Lobotomized to remove references to nl_langinfo().
+ * Adjusted coding style to fit libyang's uncrustify rules.
* */
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
#include <ctype.h>
#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
#include <string.h>
+#include <time.h>
-char *strptime(const char *restrict s, const char *restrict f, struct tm *restrict tm)
+char *
+strptime(const char * restrict s, const char * restrict f, struct tm * restrict tm)
{
- int i, w, neg, adj, min, range, *dest, dummy;
- int want_century = 0, century = 0, relyear = 0;
- while (*f) {
- if (*f != '%') {
- if (isspace(*f)) for (; *s && isspace(*s); s++);
- else if (*s != *f) return 0;
- else s++;
- f++;
- continue;
- }
- f++;
- if (*f == '+') f++;
- if (isdigit(*f)) {
- char *new_f;
- w=strtoul(f, &new_f, 10);
- f = new_f;
- } else {
- w=-1;
- }
- adj=0;
- switch (*f++) {
- case 'a': case 'A':
- case 'b': case 'B': case 'h':
- case 'c':
- goto fail_nl_langinfo;
- case 'C':
- dest = ¢ury;
- if (w<0) w=2;
- want_century |= 2;
- goto numeric_digits;
- case 'd': case 'e':
- dest = &tm->tm_mday;
- min = 1;
- range = 31;
- goto numeric_range;
- case 'D':
- s = strptime(s, "%m/%d/%y", tm);
- if (!s) return 0;
- break;
- case 'H':
- dest = &tm->tm_hour;
- min = 0;
- range = 24;
- goto numeric_range;
- case 'I':
- dest = &tm->tm_hour;
- min = 1;
- range = 12;
- goto numeric_range;
- case 'j':
- dest = &tm->tm_yday;
- min = 1;
- range = 366;
- adj = 1;
- goto numeric_range;
- case 'm':
- dest = &tm->tm_mon;
- min = 1;
- range = 12;
- adj = 1;
- goto numeric_range;
- case 'M':
- dest = &tm->tm_min;
- min = 0;
- range = 60;
- goto numeric_range;
- case 'n': case 't':
- for (; *s && isspace(*s); s++);
- break;
- case 'p':
- case 'r':
- goto fail_nl_langinfo;
- case 'R':
- s = strptime(s, "%H:%M", tm);
- if (!s) return 0;
- break;
- case 'S':
- dest = &tm->tm_sec;
- min = 0;
- range = 61;
- goto numeric_range;
- case 'T':
- s = strptime(s, "%H:%M:%S", tm);
- if (!s) return 0;
- break;
- case 'U':
- case 'W':
- /* Throw away result, for now. (FIXME?) */
- dest = &dummy;
- min = 0;
- range = 54;
- goto numeric_range;
- case 'w':
- dest = &tm->tm_wday;
- min = 0;
- range = 7;
- goto numeric_range;
- case 'x':
- case 'X':
- goto fail_nl_langinfo;
- case 'y':
- dest = &relyear;
- w = 2;
- want_century |= 1;
- goto numeric_digits;
- case 'Y':
- dest = &tm->tm_year;
- if (w<0) w=4;
- adj = 1900;
- want_century = 0;
- goto numeric_digits;
- case '%':
- if (*s++ != '%') return 0;
- break;
- default:
- return 0;
- numeric_range:
- if (!isdigit(*s)) return 0;
- *dest = 0;
- for (i=1; i<=min+range && isdigit(*s); i*=10)
- *dest = *dest * 10 + *s++ - '0';
- if (*dest - min >= (unsigned)range) return 0;
- *dest -= adj;
- switch((char *)dest - (char *)tm) {
- case offsetof(struct tm, tm_yday):
- ;
- }
- goto update;
- numeric_digits:
- neg = 0;
- if (*s == '+') s++;
- else if (*s == '-') neg=1, s++;
- if (!isdigit(*s)) return 0;
- for (*dest=i=0; i<w && isdigit(*s); i++)
- *dest = *dest * 10 + *s++ - '0';
- if (neg) *dest = -*dest;
- *dest -= adj;
- goto update;
- update:
- //FIXME
- ;
- }
- }
- if (want_century) {
- tm->tm_year = relyear;
- if (want_century & 2) tm->tm_year += century * 100 - 1900;
- else if (tm->tm_year <= 68) tm->tm_year += 100;
- }
- return (char *)s;
+ int i, w, neg, adj, min, range, *dest, dummy;
+ int want_century = 0, century = 0, relyear = 0;
+
+ while (*f) {
+ if (*f != '%') {
+ if (isspace(*f)) {
+ for ( ; *s && isspace(*s); s++) {}
+ } else if (*s != *f) {
+ return 0;
+ } else {
+ s++;
+ }
+ f++;
+ continue;
+ }
+ f++;
+ if (*f == '+') {
+ f++;
+ }
+ if (isdigit(*f)) {
+ char *new_f;
+ w = strtoul(f, &new_f, 10);
+ f = new_f;
+ } else {
+ w = -1;
+ }
+ adj = 0;
+ switch (*f++) {
+ case 'a':
+ case 'A':
+ case 'b':
+ case 'B':
+ case 'h':
+ case 'c':
+ goto fail_nl_langinfo;
+ case 'C':
+ dest = ¢ury;
+ if (w < 0) {
+ w = 2;
+ }
+ want_century |= 2;
+ goto numeric_digits;
+ case 'd':
+ case 'e':
+ dest = &tm->tm_mday;
+ min = 1;
+ range = 31;
+ goto numeric_range;
+ case 'D':
+ s = strptime(s, "%m/%d/%y", tm);
+ if (!s) {
+ return 0;
+ }
+ break;
+ case 'H':
+ dest = &tm->tm_hour;
+ min = 0;
+ range = 24;
+ goto numeric_range;
+ case 'I':
+ dest = &tm->tm_hour;
+ min = 1;
+ range = 12;
+ goto numeric_range;
+ case 'j':
+ dest = &tm->tm_yday;
+ min = 1;
+ range = 366;
+ adj = 1;
+ goto numeric_range;
+ case 'm':
+ dest = &tm->tm_mon;
+ min = 1;
+ range = 12;
+ adj = 1;
+ goto numeric_range;
+ case 'M':
+ dest = &tm->tm_min;
+ min = 0;
+ range = 60;
+ goto numeric_range;
+ case 'n':
+ case 't':
+ for ( ; *s && isspace(*s); s++) {}
+ break;
+ case 'p':
+ case 'r':
+ goto fail_nl_langinfo;
+ case 'R':
+ s = strptime(s, "%H:%M", tm);
+ if (!s) {
+ return 0;
+ }
+ break;
+ case 'S':
+ dest = &tm->tm_sec;
+ min = 0;
+ range = 61;
+ goto numeric_range;
+ case 'T':
+ s = strptime(s, "%H:%M:%S", tm);
+ if (!s) {
+ return 0;
+ }
+ break;
+ case 'U':
+ case 'W':
+ /* Throw away result, for now. (FIXME?) */
+ dest = &dummy;
+ min = 0;
+ range = 54;
+ goto numeric_range;
+ case 'w':
+ dest = &tm->tm_wday;
+ min = 0;
+ range = 7;
+ goto numeric_range;
+ case 'x':
+ case 'X':
+ goto fail_nl_langinfo;
+ case 'y':
+ dest = &relyear;
+ w = 2;
+ want_century |= 1;
+ goto numeric_digits;
+ case 'Y':
+ dest = &tm->tm_year;
+ if (w < 0) {
+ w = 4;
+ }
+ adj = 1900;
+ want_century = 0;
+ goto numeric_digits;
+ case '%':
+ if (*s++ != '%') {
+ return 0;
+ }
+ break;
+ default:
+ return 0;
+numeric_range:
+ if (!isdigit(*s)) {
+ return 0;
+ }
+ *dest = 0;
+ for (i = 1; i <= min + range && isdigit(*s); i *= 10) {
+ *dest = *dest * 10 + *s++ - '0';
+ }
+ if (*dest - min >= (unsigned)range) {
+ return 0;
+ }
+ *dest -= adj;
+ switch ((char *)dest - (char *)tm) {
+ case offsetof(struct tm, tm_yday):
+ ;
+ }
+ goto update;
+numeric_digits:
+ neg = 0;
+ if (*s == '+') {
+ s++;
+ } else if (*s == '-') {
+ neg = 1, s++;
+ }
+ if (!isdigit(*s)) {
+ return 0;
+ }
+ for (*dest = i = 0; i < w && isdigit(*s); i++) {
+ *dest = *dest * 10 + *s++ - '0';
+ }
+ if (neg) {
+ *dest = -*dest;
+ }
+ *dest -= adj;
+ goto update;
+update:
+ // FIXME
+ ;
+ }
+ }
+ if (want_century) {
+ tm->tm_year = relyear;
+ if (want_century & 2) {
+ tm->tm_year += century * 100 - 1900;
+ } else if (tm->tm_year <= 68) {
+ tm->tm_year += 100;
+ }
+ }
+ return (char *)s;
fail_nl_langinfo:
- fprintf(stderr, "strptime: nl_langinfo not available");
- return NULL;
+ fprintf(stderr, "strptime: nl_langinfo not available");
+ return NULL;
}