H�/***********************************************************************@�*_Title ADDLAB - Combine VICAR label and PDS label/edr data file�*�H�*_Descr ADDLAB combines the VICAR label and the PDS label/edr data filesK�*       that were created for CDROM into the original NIMS edr file format �I�*       of 1024 byte records.  ADDLAB is used solely to create a file for�A�* 	the VICAR/NIMS software systems which reqire a VICAR formatted��*	file.��*�H�*       ADDLAB has two command-line arguments - the first parameter mustE�*	contain the name of the PDS/EDR labeled file.  Specify the complete�D�*	pathname, including the directory specification.  The program willC�*	determine the name of the VICAR label file.  The second parameter��*	is the output file.��*�A�*	The commands to compile, link and run this program on a DEC VAX�*�*   	and a SUN UNIX workstation are below.�*��*	VAX:�*		cc addlab�*	        link addlab�F�*          To run a C program with command-line arguments on a VAX the:�*          program must be installed as a foreign command::�*            eg:   addf=="$disk:[directory]addlab.exe"    �*	   To run:/�*            eg:   addf pdsfile outfile        ��*��*��*	SUN UNIX:�;�*		cc -o addlab.exe addlab.c          will compile and link��*						     the program.;�*		addlab pdsfile outfile             will run the program.��*�I�*_Hist   Nov 18 1992  Tracie Stoewe, PDS Imaging Node, USGS, Flagstaff Az��*��*_End�I�************************************************************************/��#include <stdio.h>�#include <stdlib.h>��#include <string.h>������#define IREC_LEN1 1024�#define IREC_LEN2 512��#define	OREC_LEN 1024��#define VIC "VIC"��#define vic "vic"����int vicname();���main(argc, argv)
�	int argc;�	char *argv[];�{�8�	static char vicfile[81];	/* Name of VICAR label file */0�	static char pdsfile[81];	/* Name of PDS file */H�	static char outfile[81];	/* Name of out file(VICAR label + PDS file) */�	char ibuf[OREC_LEN];���
�	int ierr;���	FILE *fpi1;�	FILE *fpi2;�	FILE *fpo;����	if (argc != 3)��	{G�	  printf("You must specify the PDS image filename in 1st argument\n");�@�	  printf("You must specify output filename in 2nd argument\n");�	  exit;�	}�			�K�/**************************************************************************�<�*  The VICAR label file is constructed from the PDS filenameL�***************************************************************************/�	strcpy(pdsfile,argv[1]);��	strcpy(outfile,argv[2]);�!�	ierr = vicname(vicfile,pdsfile);��	if (ierr != 0) exit;���L�/***************************************************************************�* Open input filesM�****************************************************************************/�,�	if ( (fpi1 = fopen(vicfile,"rb")) == NULL )�	{E�	  printf(" *** ERROR *** Can't open VICAR label file %s\n",vicfile);��	  exit;�	}��,�	if ( (fpi2 = fopen(pdsfile,"rb")) == NULL )�	{C�	  printf(" *** ERROR *** Can't open PDS image file %s\n",pdsfile);��	  exit;�	}��K�/**************************************************************************�D�* Open output file ( VICAR label + PDS edr file including PDS labelsL�***************************************************************************/�#	ifdef vax�<�	  fpo = fopen(outfile,"wb","rfm=fix","fop=cbt","mrs=1024");�#	else�	  fpo = fopen(outfile,"wb");��#	endif��	��	if (fpo == NULL)��	{F�	  printf(" *** ERROR *** Can't open outpuf image file %s\n",outfile);�	  exit;�	}��J�/*************************************************************************%�* Read VICAR label and write to ouput�K�**************************************************************************/�!�	fread(ibuf, IREC_LEN1, 1, fpi1);� �	fwrite(ibuf, OREC_LEN, 1, fpo);�	fclose(fpi1);��J�/*************************************************************************M�*  Read PDS labels and image and write to output- input has 512 byte records,��*  output has 1024 byte records�K�/*************************************************************************/����	while (!feof(fpi2)) ��	{"�	  fread(ibuf,IREC_LEN2, 1, fpi2);*�	  fread(ibuf+IREC_LEN2,IREC_LEN2,1,fpi2);3�	  if (!feof(fpi2)) fwrite(ibuf, OREC_LEN, 1, fpo);��	}���	fclose(fpi2);
�	fclose(fpo);����}����int vicname(vicfile, pdsfile)��	char *vicfile;��	char *pdsfile;�L�/***************************************************************************F�*  vicname creates the VICAR label filename from the PDS edr filename �*  which is input�M�/***************************************************************************/��{�	�	char *i;����	strcpy(vicfile, pdsfile);�	i = strstr(vicfile, "EDR");,�	if (i == NULL) 	i = strstr(vicfile, "edr");�	if (i == NULL) goto err;�!�	if (*i == 'E') strncpy(i,VIC,3);�!�	if (*i == 'e') strncpy(i,vic,3);��	��	��	i = strrchr(vicfile,']');1�        if (i == NULL)  i = strrchr(vicfile,'/');�2�        if (i == NULL)  i = strrchr(vicfile,'\\');1�        if (i == NULL)  i = strrchr(vicfile,':');��	if (i == NULL) goto err;�)�	if ( (toupper(*(++i))) != 'E') goto err;��	*i = (*i == 'E')?'V':'v';��
�	return 0;��>� err: printf("*** ERROR *** Can not build VICAR file name\n");5�      printf("from the PDS file name: %s\n",pdsfile);�9�      printf("You must include the full directory name");��      return -1;�}�