X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/b04fe171f0375ecd5d8a24747ca1dff85720a0ca..6b200bc335dc93c5516ccb52f14bd896d8c7fad7:/SecurityTests/cspxutils/genErrorStrings/genErrorStrings.cpp diff --git a/SecurityTests/cspxutils/genErrorStrings/genErrorStrings.cpp b/SecurityTests/cspxutils/genErrorStrings/genErrorStrings.cpp deleted file mode 100644 index 35e6e8dc..00000000 --- a/SecurityTests/cspxutils/genErrorStrings/genErrorStrings.cpp +++ /dev/null @@ -1,211 +0,0 @@ -/* - * genErrorStrings.cpp - parse supplied files, generate error table from - * them of the following form: - * - * typedef struct { - * CSSM_RETURN errCode; - * const char *errStr; - * } ErrString; - * - * ErrString errStrings[] = { - * { CSSMERR_CSSM_INTERNAL_ERROR, "CSSMERR_CSSM_INTERNAL_ERROR" }, - * ... - * { CSSMERR_CSP_FUNCTION_FAILED, "CSSMERR_CSP_FUNCTION_FAILED" } - * }; - * - * The error table is written to stdout. - */ - -#include -#include -#include -#include -#include -#include "fileIo.h" - -#define MAX_LINE_LEN 256 - -static void usage(char **argv) -{ - printf("usage: %s inFile [inFile...]\n", argv[0]); - exit(1); -} - -static void writePreamble( - FILE *f) -{ - fprintf(f, "/*\n"); - fprintf(f, " * This file autogenerated by genErrorStrings. Do not edit. \n"); - fprintf(f, " */\n\n"); - fprintf(f, "#include \n\n"); - fprintf(f, "typedef struct {\n"); - fprintf(f, "\tCSSM_RETURN errCode;\n"); - fprintf(f, "\tconst char *errStr;\n"); - fprintf(f, "} ErrString;\n\n"); - fprintf(f, "static const ErrString errStrings[] = {\n"); -} - -static void writePostamble( - FILE *f) -{ - /* generate a null entry as terminator */ - fprintf(f, "\t{0, NULL}\n"); - fprintf(f, "};\n"); -} - -static void writeToken( - const char *token, - FILE *f) -{ - printf("\t{ %s,\"%s\"},\n", token, token); -} - -/* skip whitespace (but not line terminators) */ -static void skipWhite( - const char *&cp, - unsigned &bytesLeft) -{ - while(bytesLeft != 0) { - switch(*cp) { - case ' ': - case '\t': - cp++; - bytesLeft--; - break; - default: - return; - } - } -} - -static void getLine( - const char *&cp, // IN/OUT - unsigned &bytesLeft, // IN/OUT bytes left - char *lineBuf) -{ - char *outp = lineBuf; - char *endOfOut = outp + MAX_LINE_LEN - 2; - while(bytesLeft != 0) { - switch(*cp) { - case '\n': - case '\r': - cp++; - bytesLeft--; - *outp = 0; - return; - default: - *outp++ = *cp++; - bytesLeft--; - break; - } - if(outp == endOfOut) { - printf("***getLine: line length exceeded!\n"); - break; - } - } - /* end of file */ - *outp = 0; -} - -/* incoming line is NULL terminated even if it's empty */ -static bool isLineEmpty( - const char *cp) -{ - for( ; *cp; cp++) { - switch(*cp) { - case ' ': - case '\t': - break; - default: - return false; - } - } - return true; -} - -/* process one file */ -static void processFile( - const char *fileName, - const char *in, - unsigned inLen, - FILE *f) -{ - char lineBuf[MAX_LINE_LEN]; - unsigned lineLen; - const char *cp; - const char *endOfToken; - char tokenBuf[MAX_LINE_LEN]; - unsigned tokenLen; - const char *lastSlash = fileName; - const char *nextSlash; - - while((nextSlash = strchr(lastSlash, '/')) != NULL) { - lastSlash = nextSlash + 1; - } - fprintf(f, "\t/* Error codes from %s */\n", lastSlash); - - while(inLen != 0) { - /* get one line, NULL terminated */ - getLine(in, inLen, lineBuf); - if(isLineEmpty(lineBuf)) { - continue; - } - - /* skip leading whitespace */ - lineLen = strlen(lineBuf); - cp = lineBuf; - skipWhite(cp, lineLen); - - /* interesting? */ - if(strncmp((char *)cp, "CSSMERR_", 8)) { - continue; - } - - /* - * cp is the start of the CSSMERR_ token - * find end of token - */ - endOfToken = cp + 8; - for(;;) { - if(isalnum(*endOfToken) || (*endOfToken == '_')) { - endOfToken++; - continue; - } - else { - break; - } - } - - /* endOfToken is one past the end of the CSSMERR_ token */ - tokenLen = endOfToken - cp; - memmove(tokenBuf, cp, tokenLen); - tokenBuf[tokenLen] = '\0'; - - /* write the stuff */ - writeToken(tokenBuf, f); - } -} - -int main(int argc, char **argv) -{ - unsigned char *inFile; - unsigned inFileLen; - int dex; - - if(argc < 2) { - usage(argv); - } - - writePreamble(stdout); - writeToken("CSSM_OK", stdout); - for(dex=1; dex