#ifndef XADMASTER_XADCONVNAME_C
#define XADMASTER_XADCONVNAME_C

/* Programmheader

	Name:		xadConvName.c
	Main:		xadmaster
	Versionstring:	$VER: xadConvName.c 1.0 (24.09.2000)
	Author:		SDI
	Distribution:	Freeware
	Description:	name extension conversion function

 1.0   24.09.00 : first version
*/

#define SDI_TO_ANSI
#include "SDI_ASM_STD_protos.h"
#include <stdarg.h>

/*
 Arguments are extension in form
   old, new, old, new, old, new, 0
 If there is no new extension, 0 may be specified.
 Extensions should be lower case.
 Example:
 nsize = xadConvName(buf, 256, ai->xai_InName, ".gz", 0, ".tgz", ".tar", ".adz", ".adf", 0);
*/

static ULONG xadConvName(STRPTR buf, ULONG bufsize, STRPTR name, ...)
{
  va_list v;
  ULONG i, j = 0, k, up = 0;
  STRPTR ext;

  va_start(v, name);
  i = strlen(name);
  while((ext = va_arg(v, char *)))
  {
    j = strlen(ext);
    if(j < i && !stricmp(name+i-j, ext))
      break;
    va_arg(v, char *);
    j = 0;
  }
  for(k = j; k && (name[i-k] > 'z' || name[i-k] < 'a'); --k)
    ;
  if(!k)
    up = 1;
  for(k = 0; k < i-j && k < bufsize-1; ++k)
    buf[k] = name[k];
  if(ext && (ext = va_arg(v, char *)))
  {
    for(; *ext && k < bufsize-1; ++k)
    {
      buf[k] = up ? toupper(*ext) : tolower(*ext);
      ++ext;
    }
  }
  va_end(v);
  buf[k] = 0;
  return k;
}

#endif /* XADMASTER_XADCONVNAME_C */
