static void TestStr() { CommentLine("Test String"); EQ (1, 1); NEQ(1, 232); char * testphrase = "Hello world."; char * str = NewStr(testphrase); NEQ(strlen(str), 0 ); NEQ(LenStr(str), 0 ); EQ (strlen(str), LenStr(str)); EQ (strcmp(testphrase, str), 0); NEQ(str, NULL); DelStr(str); char * tmp = (char *)malloc(sizeof(char) * strlen(str)); sprintf(tmp, "%s", testphrase); String buf = NewStr(tmp); EQ (strcmp(buf, testphrase), 0); String sub = SubStr(tmp, 0, 4); printf ("%s:%d %s:%d\n", buf, LenStr(buf), sub, LenStr(sub)); DelStr(buf); DelStr(sub); }
do { Len--; Value |= (uldat)HexDigitToNum(StringHex[Len], &Error) << (Len << 2); } while (!Error && Len>(byte)0); return Error ? (uldat)0 : Value; } */ /* adapted from similar code in bdflush */ uldat ComputeUsableLenArgv(byte *CONST *argv) { byte *ptr; uldat count; ptr = argv[0] + LenStr(argv[0]); for (count = 1; argv[count]; count++) { if (argv[count] == ptr + 1) ptr += LenStr(ptr + 1) + 1; } return ptr - argv[0]; } void SetArgv0(byte *CONST *argv, uldat argv_usable_len, CONST byte *src) { uldat len = strlen(src); if (len + 1 < argv_usable_len) { CopyMem(src, argv[0], len); WriteMem(argv[0] + len, '\0', argv_usable_len - len); } else CopyMem(src, argv[0], argv_usable_len);