|
Packit |
89ede9 |
/*
|
|
Packit |
89ede9 |
* reftypes.c
|
|
Packit |
89ede9 |
*
|
|
Packit |
89ede9 |
* Copyright (c) Chris Putnam 2003-2018
|
|
Packit |
89ede9 |
*
|
|
Packit |
89ede9 |
* Source code released under the GPL version 2
|
|
Packit |
89ede9 |
*
|
|
Packit |
89ede9 |
*/
|
|
Packit |
89ede9 |
#include <stdio.h>
|
|
Packit |
89ede9 |
#include <string.h>
|
|
Packit |
89ede9 |
#include "is_ws.h"
|
|
Packit |
89ede9 |
#include "fields.h"
|
|
Packit |
89ede9 |
#include "reftypes.h"
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
int
|
|
Packit |
89ede9 |
get_reftype( char *p, long refnum, char *progname, variants *all, int nall, char *tag, int *is_default, int chattiness )
|
|
Packit |
89ede9 |
{
|
|
Packit |
89ede9 |
int i;
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
p = skip_ws( p );
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
*is_default = 0;
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
for ( i=0; i
|
|
Packit |
89ede9 |
if ( !strncasecmp( all[i].type, p, strlen(all[i].type) ) )
|
|
Packit |
89ede9 |
return i;
|
|
Packit |
89ede9 |
}
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
*is_default = 1;
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
if ( chattiness==REFTYPE_CHATTY ) {
|
|
Packit |
89ede9 |
if ( progname ) fprintf( stderr, "%s: ", progname );
|
|
Packit |
89ede9 |
fprintf( stderr, "Did not recognize type '%s' of refnum %ld (%s).\n"
|
|
Packit |
89ede9 |
"\tDefaulting to %s.\n", p, refnum, tag, all[0].type );
|
|
Packit |
89ede9 |
}
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
return 0;
|
|
Packit |
89ede9 |
}
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
int
|
|
Packit |
89ede9 |
process_findoldtag( char *oldtag, int reftype, variants all[], int nall )
|
|
Packit |
89ede9 |
{
|
|
Packit |
89ede9 |
variants *v;
|
|
Packit |
89ede9 |
int i;
|
|
Packit |
89ede9 |
v = &(all[reftype]);
|
|
Packit |
89ede9 |
/* for ( i=0; i<(all[reftype]).ntags; ++i )*/
|
|
Packit |
89ede9 |
for ( i=0; i<v->ntags; ++i )
|
|
Packit |
89ede9 |
/* if ( !strcasecmp( ((all[reftype]).tags[i]).oldstr, oldtag ) )*/
|
|
Packit |
89ede9 |
if ( !strcasecmp( (v->tags[i]).oldstr, oldtag ) )
|
|
Packit |
89ede9 |
return i;
|
|
Packit |
89ede9 |
return -1;
|
|
Packit |
89ede9 |
}
|
|
Packit |
89ede9 |
|
|
Packit |
89ede9 |
/* translate_oldtag()
|
|
Packit |
89ede9 |
*/
|
|
Packit |
89ede9 |
int
|
|
Packit |
89ede9 |
translate_oldtag( char *oldtag, int reftype, variants all[], int nall,
|
|
Packit |
89ede9 |
int *processingtype, int *level, char **newtag )
|
|
Packit |
89ede9 |
{
|
|
Packit |
89ede9 |
int n;
|
|
Packit |
89ede9 |
n = process_findoldtag( oldtag, reftype, all, nall );
|
|
Packit |
89ede9 |
if ( n!=-1 ) {
|
|
Packit |
89ede9 |
*processingtype = ((all[reftype]).tags[n]).processingtype;
|
|
Packit |
89ede9 |
*level = ((all[reftype]).tags[n]).level;
|
|
Packit |
89ede9 |
*newtag = ((all[reftype]).tags[n]).newstr;
|
|
Packit |
89ede9 |
return 1;
|
|
Packit |
89ede9 |
}
|
|
Packit |
89ede9 |
return 0;
|
|
Packit |
89ede9 |
}
|