Blame bibutils/reftypes.c

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
}