You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
141 lines
6.2 KiB
141 lines
6.2 KiB
/* |
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
% % |
|
% % |
|
% SSS CCC RRRR III PPPP TTTTT TTTTT OOO K K EEEE N N % |
|
% S C R R I P P T T O O K K E NN N % |
|
% SSS C RRRR I PPPP T T O O KK EEE N N N % |
|
% S C R R I P T T O O K K E N NN % |
|
% SSSS CCC R RR III P T T OOO K K EEEE N N % |
|
% % |
|
% TTTTT EEEEE SSSSS TTTTT % |
|
% T E SS T % |
|
% T EEE SSS T % |
|
% T E SS T % |
|
% T EEEEE SSSSS T % |
|
% % |
|
% Perform "Magick" on Images via the Command Line Interface % |
|
% % |
|
% Dragon Computing % |
|
% Anthony Thyssen % |
|
% January 2012 % |
|
% % |
|
% % |
|
% Copyright 1999-2019 ImageMagick Studio LLC, a non-profit organization % |
|
% dedicated to making software imaging solutions freely available. % |
|
% % |
|
% You may not use this file except in compliance with the License. You may % |
|
% obtain a copy of the License at % |
|
% % |
|
% https://imagemagick.org/script/license.php % |
|
% % |
|
% Unless required by applicable law or agreed to in writing, software % |
|
% distributed under the License is distributed on an "AS IS" BASIS, % |
|
% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. % |
|
% See the License for the specific language governing permissions and % |
|
% limitations under the License. % |
|
% % |
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
% |
|
% Test the raw tokanization of the ScriptToken Subroutines |
|
% |
|
% This actually uses very little of the magic core functions |
|
% and in fact creates a completely stand-alone program by substituting |
|
% required MagickCore with direct system equivelents. |
|
% |
|
% Build |
|
% cc script-token-test.c -o script-token-test |
|
% |
|
% For testing see script-token-test.sh |
|
% |
|
*/ |
|
|
|
/* System Replacement for MagickWand includes */ |
|
#include <stdio.h> |
|
#include <string.h> |
|
#include <stdlib.h> |
|
#include <assert.h> |
|
#include <errno.h> |
|
|
|
/* Defines to replace MagickWand / MagickCore defintions */ |
|
#define MagickPathExtent 4096 |
|
#define MagickFalse 0 |
|
#define MagickTrue 1 |
|
#define MagickBooleanType int |
|
|
|
#define AcquireMagickMemory(s) malloc(s) |
|
#define RelinquishMagickMemory(p) (free(p),NULL) |
|
#define ResizeMagickMemory(p,s) realloc(p,s) |
|
#define ResetMagickMemory(p,b,s) memset(p,b,s) |
|
#define StringToLong(s) strtol(s,(char **) NULL,10) |
|
#define LocaleCompare(p,q) strcasecmp(p,q) |
|
#define LocaleNCompare(p,q,l) strncasecmp(p,q,l) |
|
#define WandSignature 0xabacadabUL |
|
#define fopen_utf8(p,q) fopen(p,q) |
|
#define WandExport |
|
|
|
/* Include the actual code for ScriptToken functions */ |
|
#define SCRIPT_TOKEN_TESTING 1 /* Prevent MagickWand Includes */ |
|
#include "../script-token.h" |
|
#include "../script-token.c" |
|
|
|
/* Test program to report what tokens it finds in given input file/stream */ |
|
|
|
int main(int argc, char *argv[]) |
|
{ |
|
ScriptTokenInfo |
|
*token_info; |
|
|
|
token_info = AcquireScriptTokenInfo( (argc>1) ? argv[1] : "-" ); |
|
if (token_info == (ScriptTokenInfo *) NULL) { |
|
printf("Script Open Failure : %s\n", strerror(errno)); |
|
return(1); |
|
} |
|
|
|
while (1) { |
|
if( GetScriptToken(token_info) == MagickFalse ) |
|
break; |
|
|
|
if( strlen(token_info->token) > INITAL_TOKEN_LENGTH-1 ) { |
|
token_info->token[INITAL_TOKEN_LENGTH-4] = '.'; |
|
token_info->token[INITAL_TOKEN_LENGTH-3] = '.'; |
|
token_info->token[INITAL_TOKEN_LENGTH-2] = '.'; |
|
token_info->token[INITAL_TOKEN_LENGTH-1] = '\0'; |
|
} |
|
printf("l=%d, c=%d, stat=%d, len=%d, token=\"%s\"\n", |
|
token_info->token_line, token_info->token_column, |
|
token_info->status, token_info->length, token_info->token); |
|
} |
|
|
|
switch( token_info->status ) { |
|
case TokenStatusOK: |
|
break; |
|
case TokenStatusEOF: |
|
printf("EOF Found\n"); |
|
break; |
|
case TokenStatusBadQuotes: |
|
/* Ensure last token has a sane length for error report */ |
|
if( strlen(token_info->token) > INITAL_TOKEN_LENGTH-1 ) { |
|
token_info->token[INITAL_TOKEN_LENGTH-4] = '.'; |
|
token_info->token[INITAL_TOKEN_LENGTH-3] = '.'; |
|
token_info->token[INITAL_TOKEN_LENGTH-2] = '.'; |
|
token_info->token[INITAL_TOKEN_LENGTH-1] = '\0'; |
|
} |
|
printf("Bad Quotes l=%d, c=%d token=\"%s\"\n", |
|
token_info->token_line,token_info->token_column, token_info->token); |
|
break; |
|
case TokenStatusMemoryFailed: /* token is invalid */ |
|
printf("Out of Memory l=%d, c=%d\n", |
|
token_info->token_line,token_info->token_column); |
|
break; |
|
case TokenStatusBinary: /* token is invalid */ |
|
printf("Binary Char at l=%d, c=%d\n", |
|
token_info->curr_line,token_info->curr_column); |
|
break; |
|
} |
|
|
|
/* Clean up */ |
|
token_info = DestroyScriptTokenInfo(token_info); |
|
|
|
return(0); |
|
}
|
|
|