summaryrefslogtreecommitdiffstats
path: root/private/ntos/ndis/digi/pcimac/ansihelp.c
diff options
context:
space:
mode:
authorAdam <you@example.com>2020-05-17 05:51:50 +0200
committerAdam <you@example.com>2020-05-17 05:51:50 +0200
commite611b132f9b8abe35b362e5870b74bce94a1e58e (patch)
treea5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/ntos/ndis/digi/pcimac/ansihelp.c
downloadNT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip
Diffstat (limited to 'private/ntos/ndis/digi/pcimac/ansihelp.c')
-rw-r--r--private/ntos/ndis/digi/pcimac/ansihelp.c487
1 files changed, 487 insertions, 0 deletions
diff --git a/private/ntos/ndis/digi/pcimac/ansihelp.c b/private/ntos/ndis/digi/pcimac/ansihelp.c
new file mode 100644
index 000000000..1886e88d1
--- /dev/null
+++ b/private/ntos/ndis/digi/pcimac/ansihelp.c
@@ -0,0 +1,487 @@
+
+#include <ndis.h>
+//#include <ansihelp.h>
+
+#define _XA 0x200
+#define _XS 0x100
+#define _BB 0x80
+#define _CN 0x40
+#define _DI 0x20
+#define _LO 0x10
+#define _PU 0x08
+#define _SP 0x04
+#define _UP 0x02
+#define _XD 0x01
+#define XDI (_DI | _XD)
+#define XLO (_LO | _XD)
+#define XUP (_UP | _XD)
+
+static const SHORT CTypeTable[257] = {
+ 0,
+ _BB, _BB, _BB, _BB, _BB, _BB, _BB, _BB,
+ _BB, _CN, _CN, _CN, _CN, _CN, _BB, _BB,
+ _BB, _BB, _BB, _BB, _BB, _BB, _BB, _BB,
+ _BB, _BB, _BB, _BB, _BB, _BB, _BB, _BB,
+ _SP, _PU, _PU, _PU, _PU, _PU, _PU, _PU,
+ _PU, _PU, _PU, _PU, _PU, _PU, _PU, _PU,
+ XDI, XDI, XDI, XDI, XDI, XDI, XDI, XDI,
+ XDI, XDI, _PU, _PU, _PU, _PU, _PU, _PU,
+ _PU, XUP, XUP, XUP, XUP, XUP, XUP, _PU,
+ _UP, _UP, _UP, _UP, _UP, _UP, _UP, _UP,
+ _UP, _UP, _UP, _UP, _UP, _UP, _UP, _UP,
+ _UP, _UP, _UP, _PU, _PU, _PU, _PU, _PU,
+ _PU, XLO, XLO, XLO, XLO, XLO, XLO, _LO,
+ _LO, _LO, _LO, _LO, _LO, _LO, _LO, _LO,
+ _LO, _LO, _LO, _LO, _LO, _LO, _LO, _LO,
+ _LO, _LO, _LO, _PU, _PU, _PU, _PU, _BB, };
+
+const SHORT *_Ctype = &CTypeTable[1];
+
+#define BASE_MAX 36
+static const CHAR digits[] = {"0123456789abcdefghijklmnopqrstuvwxyz"};
+static const CHAR ndigs[BASE_MAX+1] = {
+ 0, 0, 33, 21, 17, 14, 13, 12, 11, 11,
+ 10, 10, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8,
+ 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7 };
+
+ULONG __Stoul (const CHAR *s, CHAR **endptr, INT base);
+
+/******************************************************************************
+
+ @doc INTERNAL
+
+ @internal ULONG | __strlen | string length
+
+ @parm PUCHAR | str | the string.
+
+ @rdesc ULONG | the length of the string.
+
+******************************************************************************/
+ULONG
+__strlen(PUCHAR str)
+{
+ ULONG len = 0;
+
+ if (str == NULL) {
+ return(0);
+ }
+
+ while (str[len] != '\0') {
+ len++;
+ }
+
+ return(len);
+
+} // end of __strlen
+
+
+/******************************************************************************
+
+ @doc INTERNAL
+
+ @internal LONG | __strcmp | compare strings
+
+ @parm PUCHAR | str1 | one string.
+
+ @parm PUCHAR | str2 | another string.
+
+ @rdesc ULONG | the comparison result.
+
+******************************************************************************/
+LONG
+__strcmp(PUCHAR str1, PUCHAR str2)
+{
+ ULONG len = 0;
+
+ if (str1 == str2) {
+ return(0);
+ }
+ if ((str1 == NULL) || (str2 == NULL)) {
+ return(-1);
+ }
+
+ while ((str1[len] == str2[len]) && (str1[len] != '\0') &&
+ (str2[len] != '\0')) {
+ len++;
+ }
+
+ if (str1[len] == str2[len]) {
+ return(0);
+ } else if (str1[len] < str2[len]) {
+ return(-1);
+ } else {
+ return(1);
+ }
+
+} // end of __strcmp
+
+
+/******************************************************************************
+
+ @doc INTERNAL
+
+ @internal LONG | __strncmp | compare strings
+
+ @parm PUCHAR | str1 | one string.
+
+ @parm PUCHAR | str2 | another string.
+
+ @parm ULONG | count | maximum characters to compare
+
+ @rdesc ULONG | the comparison result.
+
+******************************************************************************/
+LONG
+__strncmp(PUCHAR str1, PUCHAR str2, ULONG count)
+{
+ ULONG len = 0;
+
+ if (str1 == str2) {
+ return(0);
+ }
+ if ((str1 == NULL) || (str2 == NULL)) {
+ return(-1);
+ }
+
+ while (count-- && (str1[len] == str2[len]) && (str1[len] != '\0') &&
+ (str2[len] != '\0')) {
+ len++;
+ }
+
+ if (count == 0) {
+ len--;
+ }
+ if (str1[len] == str2[len]) {
+ return(0);
+ } else if (str1[len] < str2[len]) {
+ return(-1);
+ } else {
+ return(1);
+ }
+
+} // end of __strncmp
+
+
+/******************************************************************************
+
+ @doc INTERNAL
+
+ @internal LONG | __strnicmp | compare strings (case insensitive)
+
+ @parm PUCHAR | str1 | one string.
+
+ @parm PUCHAR | str2 | another string.
+
+ @parm ULONG | count | maximum characters to compare
+
+ @rdesc ULONG | the comparison result.
+
+******************************************************************************/
+LONG
+__strnicmp(PUCHAR str1, PUCHAR str2, ULONG count)
+{
+ ULONG len = 0;
+
+ if (str1 == str2) {
+ return(0);
+ }
+ if ((str1 == NULL) || (str2 == NULL)) {
+ return(-1);
+ }
+
+ while (count-- && (str1[len] == str2[len]) && (str1[len] != '\0') &&
+ (str2[len] != '\0')) {
+ len++;
+ }
+
+ if (count == 0) {
+ len--;
+ }
+ if (str1[len] == str2[len]) {
+ return(0);
+ } else if (str1[len] < str2[len]) {
+ return(-1);
+ } else {
+ return(1);
+ }
+
+} // end of __strnicmp
+
+
+
+
+
+/******************************************************************************
+
+ @doc INTERNAL
+
+ @internal PUCHAR | __strncpy | copy strings
+
+ @parm PUCHAR | str1 | one string.
+
+ @parm PUCHAR | str2 | another string.
+
+ @parm ULONG | count | maximum characters to copy
+
+ @rdesc ULONG |
+
+******************************************************************************/
+PUCHAR
+__strncpy(PUCHAR str1, PUCHAR str2, ULONG count)
+{
+ PUCHAR tmp = str1;
+
+ if (str1 && str2 && *str2 && count) {
+ while (count-- && (*str2 != '\0')) {
+ *str1++ = *str2++;
+ }
+ *str1 = '\0';
+ }
+
+
+ return (tmp);
+} // end of __strncpy
+
+
+
+
+/******************************************************************************
+
+ @doc INTERNAL
+
+ @internal PUCHAR | __strcpy | copy strings
+
+ @parm PUCHAR | str1 | one string.
+
+ @parm PUCHAR | str2 | another string.
+
+ @rdesc PUCHAR | the comparison result.
+
+******************************************************************************/
+PUCHAR
+__strcpy(PUCHAR str1, PUCHAR str2)
+{
+ PUCHAR tmp = str1;
+
+ if (str1 && str2 && *str2) {
+ while (*str2 != '\0') {
+ *str1++ = *str2++;
+ }
+ *str1 = *str2;
+ }
+
+ return (tmp);
+} // end of __strcpy
+
+
+
+/******************************************************************************
+
+ @doc INTERNAL
+
+ @internal PUCHAR | __strstr | search for substring with another string
+
+ @parm PUCHAR | str1 | source string.
+
+ @parm PUCHAR | str2 | substring string.
+
+ @rdesc PUCHAR |
+
+******************************************************************************/
+PUCHAR
+__strstr(PUCHAR str1, PUCHAR str2)
+{
+ return (NULL);
+} // end of __strstr
+
+
+
+/******************************************************************************
+
+ @doc INTERNAL
+
+ @internal PUCHAR | __memchr | search for char within buffer[0..count]
+
+ @parm PUCHAR | buffer | starting address.
+
+ @parm CHAR | chr | chr
+
+ @parm ULONG | count | count
+
+ @rdesc PUCHAR |
+
+******************************************************************************/
+PUCHAR
+__memchr(PUCHAR buffer, CHAR chr, ULONG count)
+{
+ ULONG len = 0;
+
+ if (buffer == NULL) {
+ return(NULL);
+ }
+
+ while ((len<count) && (buffer[len] != chr)) {
+ len++;
+ }
+
+ return ((len<count)?(buffer+len):NULL);
+} // end of __memchr
+
+
+
+/******************************************************************************
+
+ @doc INTERNAL
+
+ @internal PUCHAR | __strchr | search for char within a string
+
+ @parm PUCHAR | str1 | source string.
+
+ @parm CHAR | chr | chr
+
+ @rdesc PUCHAR |
+
+******************************************************************************/
+PUCHAR
+__strchr(PUCHAR str1, CHAR chr)
+{
+ ULONG len = 0;
+
+ if (str1 == NULL) {
+ return(NULL);
+ }
+
+ while ((str1[len] != '\0') && (str1[len] != chr)) {
+ len++;
+ }
+
+ return ((str1[len])?(str1+len):NULL);
+} // end of __strchr
+
+
+
+/******************************************************************************
+
+ @doc INTERNAL
+
+ @internal PUCHAR | __strrchr | reverse search for char within a string
+
+ @parm PUCHAR | str1 | source string.
+
+ @parm CHAR | chr | chr
+
+ @rdesc PUCHAR |
+
+******************************************************************************/
+PUCHAR
+__strrchr(PUCHAR str1, CHAR chr)
+{
+ ULONG len = 0;
+
+ return(NULL);
+
+} // end of __strrchr
+
+
+
+/******************************************************************************
+
+ @doc INTERNAL
+
+ @internal PUCHAR | __strlwr | convert a string to lowercase
+
+ @parm PUCHAR | str1 | source string.
+
+ @rdesc PUCHAR |
+
+******************************************************************************/
+PUCHAR
+__strlwr(PUCHAR str1)
+{
+ for( ; str1 != NULL, *str1 != '\0'; str1++ )
+ *str1 = tolower( *str1 );
+
+ return( str1 );
+} // end of __strlwr
+
+ULONG
+__strtoul (const CHAR *s, INT base)
+{
+ return(__Stoul (s, (CHAR **)NULL, base));
+}
+
+ULONG
+__Stoul (const CHAR *s, CHAR **endptr, INT base)
+{
+ const CHAR *sc, *sd;
+ const CHAR *s1, *s2;
+ CHAR sign;
+ LONG n;
+ ULONG x, y;
+
+ for (sc = s; isspace (*sc); ++sc);
+
+ sign = *sc == '-' || *sc == '+' ? *sc++ : '+';
+
+ if (base < 0 || base == 1 || BASE_MAX < base)
+ {
+ if (endptr)
+ *endptr = (CHAR *)s;
+ return( (ULONG)-1 );
+ }
+ else if (base)
+ {
+ if (base == 16 && *sc == '0' && (sc[1] == 'x' || sc[1] == 'X'))
+ sc += 2;
+ }
+ else if (*sc != '0')
+ base = 10;
+ else if (sc[1] == 'x' || sc[1] == 'X')
+ {
+ base = 16;
+ sc += 2;
+ }
+ else
+ base = 8;
+ for (s1 = sc; *sc == '0'; ++sc );
+ x = 0;
+ for (s2 = sc; (sd = memchr (digits, (INT)tolower(*sc), (UINT)base)) != NULL; ++sc)
+ {
+ y = x;
+ x = x * base + (sd - digits);
+ }
+ if (s1 == sc)
+ {
+ if (endptr)
+ *endptr = (CHAR *)s;
+ return( (ULONG)-1 );
+ }
+ n = sc - s2 - ndigs[base];
+ if (n < 0)
+ ;
+ else if (0 < n || x < x - sc[-1] || (x - sc[-1]) / base != y)
+ {
+ // overflow
+ x = 0xFFFFFFFF;
+ }
+ if (sign == '-')
+ x = (ULONG)(0 - x);
+ if (endptr)
+ *endptr = (CHAR *)sc;
+ return(x);
+}
+
+INT
+__isspace (INT c)
+{
+ return(_Ctype[(INT)c] & (_CN | _SP | _XS));
+}
+
+PCHAR
+__vsprintf()
+{
+ return( NULL );
+}
+
+