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.
142 lines
6.2 KiB
142 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-2021 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);
|
|
}
|