tarx

Pablo Allietti pablo en lacnic.net
Mar Ago 23 14:22:59 CLT 2005


On Tue, Aug 23, 2005 at 01:41:57PM -0400, Horst von Brand wrote:
> Aca va un parche que lo endecenta para el uso de hoy. Ojala funcione...


gracias doc, compilar compilo perfecto. ahora estoy buscando docu para
hacerlo andar....mil gracias.

> 
> --- tarx.c.old	2005-08-23 13:22:12.000000000 -0400
> +++ tarx.c	2005-08-23 13:37:24.000000000 -0400
> @@ -2,25 +2,32 @@
>   * tarx - manipulate damaged tar tapes heuristically
>   */
>  
> +#include <unistd.h>
> +#include <stdlib.h>
>  #include <stdio.h>
> +#include <errno.h>
>  #include <string.h>
>  
> +#include <sys/types.h>
> +#include <sys/stat.h>
> +#include <fcntl.h>
> +
>  #define NAMSIZ 100		/* why isn't there a tar.h??? */
>  #define	FLAG	(NAMSIZ+8+8+8+12+12+8)	/* offset of is-a-link flag */
>  struct matches {
>  	int offset;
>  	char value;
>  } matches[] = {			/* pattern-match table for header blocks */
> -	NAMSIZ+6,	' ',
> -	NAMSIZ+7,	'\0',
> -	NAMSIZ+8+6,	' ',
> -	NAMSIZ+8+7,	'\0',
> -	NAMSIZ+16+6,	' ',
> -	NAMSIZ+16+7,	'\0',
> -	NAMSIZ+24+11,	' ',
> -	NAMSIZ+36+11,	' ',
> -	NAMSIZ+48+6,	'\0',
> -	0,		0,
> +	{NAMSIZ+6,	' '},
> +	{NAMSIZ+7,	'\0'},
> +	{NAMSIZ+8+6,	' '},
> +	{NAMSIZ+8+7,	'\0'},
> +	{NAMSIZ+16+6,	' '},
> +	{NAMSIZ+16+7,	'\0'},
> +	{NAMSIZ+24+11,	' '},
> +	{NAMSIZ+36+11,	' '},
> +	{NAMSIZ+48+6,	'\0'},
> +	{0,		0},
>  };
>  
>  #ifndef MAXBLOCK
> @@ -46,14 +53,13 @@
>  
>  #define	STREQ(a, b)	(*(a) == *(b) && strcmp((a), (b)) == 0)
>  
> -#ifndef lint
> -static char RCSid[] = "$Header$";
> -#endif
> -
>  int debug = 0;
>  char *progname;
>  
> -extern void exit();
> +extern void doblock(char *block, int argc, char **argv);
> +extern int istar(char *block);
> +extern int match(char *s, int argc, char **argv);
> +
>  #ifdef UTZOOERR
>  extern char *mkprogname();
>  #else
> @@ -63,6 +69,7 @@
>  /*
>   - main - parse arguments and handle options
>   */
> +int
>  main(argc, argv)
>  int argc;
>  char *argv[];
> @@ -71,7 +78,6 @@
>  	int errflg = 0;
>  	register char *block;
>  	extern char *readblock();
> -	extern char *malloc();
>  	extern int optind;
>  	extern char *optarg;
>  
> @@ -102,14 +108,14 @@
>  	if (errflg) {
>  		fprintf(stderr, "usage: %s ", progname);
>  		fprintf(stderr, "[-t] [-b blockf] [-e errs] [-E eofs] [name] ...\n");
> -		exit(2);
> +		exit(EXIT_FAILURE);
>  	}
>  
>  	buf = malloc(maxblock*BLOCK);
>  	if (buf == NULL) {
>  		fprintf(stderr, "%s: cannot allocate buffer of %d blocks\n",
>  							progname, maxblock);
> -		exit(1);
> +		exit(EXIT_FAILURE);
>  	}
>  
>  	for(;;) {
> @@ -129,9 +135,6 @@
>  int desc;
>  {
>  	register int count;
> -	extern int errno;
> -	extern int sys_nerr;
> -	extern char *sys_errlist[];
>  
>  	if (nleft > 0) {
>  		whichnow++;
> @@ -149,16 +152,14 @@
>  			printf("---! bad block size (%d) - treated as bad\n", count);
>  			nbad++;
>  		} else {
> -			if (errno >= 0 && errno < sys_nerr)
> -				printf("---! error (%s)\n", sys_errlist[errno]);
> -			else
> -				printf("---! error %d\n", errno);
> +			if (errno >= 0)
> +				perror("---! error");
>  			nbad++;
>  		}
>  		if (nbad >= badlimit)
> -			exit(1);
> +			exit(EXIT_FAILURE);
>  		if (neof >= eoflimit)
> -			exit(0);
> +			exit(EXIT_SUCCESS);
>  		return(NULL);
>  	}
>  
> @@ -173,6 +174,7 @@
>  /*
>   - doblock - process a block
>   */
> +void
>  doblock(block, argc, argv)
>  char *block;
>  int argc;
---end quoted text---

-- 

.-

Pablo Allietti
LACNIC



Más información sobre la lista de distribución Linux