get rid of __LONG_LONG_SUPPORTED
. also drop minix-specific code in libarchive that was needed for not supporting 64 bit ints
This commit is contained in:
		
							parent
							
								
									23df780120
								
							
						
					
					
						commit
						f22864c24e
					
				@ -128,14 +128,10 @@ print(PR *pr, u_char *bp)
 | 
				
			|||||||
	    float f4;
 | 
						    float f4;
 | 
				
			||||||
	  int16_t s2;
 | 
						  int16_t s2;
 | 
				
			||||||
	  int32_t s4;
 | 
						  int32_t s4;
 | 
				
			||||||
#ifdef __LONG_LONG_SUPPORTED
 | 
					 | 
				
			||||||
	  int64_t s8;
 | 
						  int64_t s8;
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	 uint16_t u2;
 | 
						 uint16_t u2;
 | 
				
			||||||
	 uint32_t u4;
 | 
						 uint32_t u4;
 | 
				
			||||||
#ifdef __LONG_LONG_SUPPORTED
 | 
					 | 
				
			||||||
	 uint64_t u8;
 | 
						 uint64_t u8;
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	switch(pr->flags) {
 | 
						switch(pr->flags) {
 | 
				
			||||||
	case F_ADDRESS:
 | 
						case F_ADDRESS:
 | 
				
			||||||
@ -175,12 +171,10 @@ print(PR *pr, u_char *bp)
 | 
				
			|||||||
			memmove(&s4, bp, sizeof(s4));
 | 
								memmove(&s4, bp, sizeof(s4));
 | 
				
			||||||
			(void)printf(pr->fmt, (int64_t)s4);
 | 
								(void)printf(pr->fmt, (int64_t)s4);
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
#ifdef __LONG_LONG_SUPPORTED
 | 
					 | 
				
			||||||
		case 8:
 | 
							case 8:
 | 
				
			||||||
			memmove(&s8, bp, sizeof(s8));
 | 
								memmove(&s8, bp, sizeof(s8));
 | 
				
			||||||
			(void)printf(pr->fmt, (int64_t)s8);
 | 
								(void)printf(pr->fmt, (int64_t)s8);
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	case F_P:
 | 
						case F_P:
 | 
				
			||||||
@ -208,12 +202,10 @@ print(PR *pr, u_char *bp)
 | 
				
			|||||||
			memmove(&u4, bp, sizeof(u4));
 | 
								memmove(&u4, bp, sizeof(u4));
 | 
				
			||||||
			(void)printf(pr->fmt, (uint64_t)u4);
 | 
								(void)printf(pr->fmt, (uint64_t)u4);
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
#ifdef __LONG_LONG_SUPPORTED
 | 
					 | 
				
			||||||
		case 8:
 | 
							case 8:
 | 
				
			||||||
			memmove(&u8, bp, sizeof(u8));
 | 
								memmove(&u8, bp, sizeof(u8));
 | 
				
			||||||
			(void)printf(pr->fmt, (uint64_t)u8);
 | 
								(void)printf(pr->fmt, (uint64_t)u8);
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
				
			|||||||
@ -68,17 +68,6 @@ typedef struct _fs {			/* format strings */
 | 
				
			|||||||
	int bcnt;
 | 
						int bcnt;
 | 
				
			||||||
} FS;
 | 
					} FS;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __minix
 | 
					 | 
				
			||||||
#define inline
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifndef __LONG_LONG_SUPPORTED
 | 
					 | 
				
			||||||
#include <minix/u64.h>
 | 
					 | 
				
			||||||
typedef long int64_t;
 | 
					 | 
				
			||||||
typedef unsigned long uint64_t;
 | 
					 | 
				
			||||||
#define PRId64 "ld"
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
enum _vflag { ALL, DUP, FIRST, WAIT };	/* -v values */
 | 
					enum _vflag { ALL, DUP, FIRST, WAIT };	/* -v values */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern int blocksize;			/* data block size */
 | 
					extern int blocksize;			/* data block size */
 | 
				
			||||||
 | 
				
			|||||||
@ -194,11 +194,7 @@ size(FS *fs)
 | 
				
			|||||||
				bcnt += 4;
 | 
									bcnt += 4;
 | 
				
			||||||
				break;
 | 
									break;
 | 
				
			||||||
			case 'e': case 'E': case 'f': case 'g': case 'G':
 | 
								case 'e': case 'E': case 'f': case 'g': case 'G':
 | 
				
			||||||
#ifdef __LONG_LONG_SUPPORTED
 | 
					 | 
				
			||||||
				bcnt += 8;
 | 
									bcnt += 8;
 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
				bcnt += 4;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
				break;
 | 
									break;
 | 
				
			||||||
			case 's':
 | 
								case 's':
 | 
				
			||||||
				bcnt += prec;
 | 
									bcnt += prec;
 | 
				
			||||||
@ -324,11 +320,9 @@ isint:
 | 
				
			|||||||
				case 2:
 | 
									case 2:
 | 
				
			||||||
					pr->bcnt = 2;
 | 
										pr->bcnt = 2;
 | 
				
			||||||
					break;
 | 
										break;
 | 
				
			||||||
#ifdef __LONG_LONG_SUPPORTED
 | 
					 | 
				
			||||||
				case 8:
 | 
									case 8:
 | 
				
			||||||
					pr->bcnt = 8;
 | 
										pr->bcnt = 8;
 | 
				
			||||||
					break;
 | 
										break;
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
				default:
 | 
									default:
 | 
				
			||||||
					p1[1] = '\0';
 | 
										p1[1] = '\0';
 | 
				
			||||||
					badcnt(p1);
 | 
										badcnt(p1);
 | 
				
			||||||
@ -337,13 +331,9 @@ isint:
 | 
				
			|||||||
			case 'e': case 'E': case 'f': case 'g': case 'G':
 | 
								case 'e': case 'E': case 'f': case 'g': case 'G':
 | 
				
			||||||
				pr->flags = F_DBL;
 | 
									pr->flags = F_DBL;
 | 
				
			||||||
				switch(fu->bcnt) {
 | 
									switch(fu->bcnt) {
 | 
				
			||||||
#ifdef __LONG_LONG_SUPPORTED
 | 
					 | 
				
			||||||
				case 0: case 8:
 | 
									case 0: case 8:
 | 
				
			||||||
					pr->bcnt = 8;
 | 
										pr->bcnt = 8;
 | 
				
			||||||
					break;
 | 
										break;
 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
				case 0:
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
				case 4:
 | 
									case 4:
 | 
				
			||||||
					pr->bcnt = 4;
 | 
										pr->bcnt = 4;
 | 
				
			||||||
					break;
 | 
										break;
 | 
				
			||||||
 | 
				
			|||||||
@ -9,10 +9,6 @@
 | 
				
			|||||||
#define _ANSI		31459	/* gcc conforms enough even in non-ANSI mode */
 | 
					#define _ANSI		31459	/* gcc conforms enough even in non-ANSI mode */
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(__GNUC__) && !defined(__STRICT_ANSI__) || __STDC_VERSION__ >= 199901
 | 
					 | 
				
			||||||
#define __LONG_LONG_SUPPORTED 1
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* Setting of _POSIX_SOURCE (or _NETBSD_SOURCE) in NBSD headers is 
 | 
					/* Setting of _POSIX_SOURCE (or _NETBSD_SOURCE) in NBSD headers is 
 | 
				
			||||||
 * done in <sys/featuretest.h> */
 | 
					 * done in <sys/featuretest.h> */
 | 
				
			||||||
#include <sys/featuretest.h>
 | 
					#include <sys/featuretest.h>
 | 
				
			||||||
 | 
				
			|||||||
@ -9,44 +9,6 @@
 | 
				
			|||||||
#include <minix/types.h>
 | 
					#include <minix/types.h>
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if !defined(__LONG_LONG_SUPPORTED)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
u64_t add64(u64_t i, u64_t j);
 | 
					 | 
				
			||||||
u64_t add64u(u64_t i, unsigned j);
 | 
					 | 
				
			||||||
u64_t add64ul(u64_t i, unsigned long j);
 | 
					 | 
				
			||||||
u64_t sub64(u64_t i, u64_t j);
 | 
					 | 
				
			||||||
u64_t sub64u(u64_t i, unsigned j);
 | 
					 | 
				
			||||||
u64_t sub64ul(u64_t i, unsigned long j);
 | 
					 | 
				
			||||||
int bsr64(u64_t i);
 | 
					 | 
				
			||||||
unsigned diff64(u64_t i, u64_t j);
 | 
					 | 
				
			||||||
u64_t cvu64(unsigned i);
 | 
					 | 
				
			||||||
u64_t cvul64(unsigned long i);
 | 
					 | 
				
			||||||
unsigned cv64u(u64_t i);
 | 
					 | 
				
			||||||
unsigned long cv64ul(u64_t i);
 | 
					 | 
				
			||||||
u64_t div64(u64_t i, u64_t j);
 | 
					 | 
				
			||||||
unsigned long div64u(u64_t i, unsigned j);
 | 
					 | 
				
			||||||
u64_t div64u64(u64_t i, unsigned j);
 | 
					 | 
				
			||||||
u64_t rem64(u64_t i, u64_t j);
 | 
					 | 
				
			||||||
unsigned rem64u(u64_t i, unsigned j);
 | 
					 | 
				
			||||||
u64_t mul64(u64_t i, u64_t j);
 | 
					 | 
				
			||||||
u64_t mul64u(unsigned long i, unsigned j);
 | 
					 | 
				
			||||||
int cmp64(u64_t i, u64_t j);
 | 
					 | 
				
			||||||
int cmp64u(u64_t i, unsigned j);
 | 
					 | 
				
			||||||
int cmp64ul(u64_t i, unsigned long j);
 | 
					 | 
				
			||||||
unsigned long ex64lo(u64_t i);
 | 
					 | 
				
			||||||
unsigned long ex64hi(u64_t i);
 | 
					 | 
				
			||||||
u64_t make64(unsigned long lo, unsigned long hi);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define is_zero64(i)	((i).lo == 0 && (i).hi == 0)
 | 
					 | 
				
			||||||
#define make_zero64(i)	do { (i).lo = (i).hi = 0; } while(0)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define neg64(i)	do {				\
 | 
					 | 
				
			||||||
				(i).lo = ~(i).lo;	\
 | 
					 | 
				
			||||||
				(i).hi = ~(i).hi;	\
 | 
					 | 
				
			||||||
				(i) = add64u((i), 1);	\
 | 
					 | 
				
			||||||
			} while(0)
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include <limits.h>
 | 
					#include <limits.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define is_zero64(i)	((i) == 0)
 | 
					#define is_zero64(i)	((i) == 0)
 | 
				
			||||||
@ -209,8 +171,6 @@ static inline u64_t sub64ul(u64_t i, unsigned long j)
 | 
				
			|||||||
	return i - j;
 | 
						return i - j;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
u64_t rrotate64(u64_t x, unsigned short b);
 | 
					u64_t rrotate64(u64_t x, unsigned short b);
 | 
				
			||||||
u64_t rshift64(u64_t x, unsigned short b);
 | 
					u64_t rshift64(u64_t x, unsigned short b);
 | 
				
			||||||
u64_t xor64(u64_t a, u64_t b);
 | 
					u64_t xor64(u64_t a, u64_t b);
 | 
				
			||||||
 | 
				
			|||||||
@ -43,21 +43,11 @@ __FBSDID("$FreeBSD: head/lib/libarchive/archive_write_set_format_ustar.c 191579
 | 
				
			|||||||
#include "archive_private.h"
 | 
					#include "archive_private.h"
 | 
				
			||||||
#include "archive_write_private.h"
 | 
					#include "archive_write_private.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __minix
 | 
					 | 
				
			||||||
#include "minix_utils.h"
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifndef __minix
 | 
					 | 
				
			||||||
struct ustar {
 | 
					struct ustar {
 | 
				
			||||||
	uint64_t	entry_bytes_remaining;
 | 
						uint64_t	entry_bytes_remaining;
 | 
				
			||||||
	uint64_t	entry_padding;
 | 
						uint64_t	entry_padding;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
#else
 | 
					
 | 
				
			||||||
struct ustar {
 | 
					 | 
				
			||||||
	size_t	entry_bytes_remaining;
 | 
					 | 
				
			||||||
	off_t	entry_padding;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Define structure of POSIX 'ustar' tar header.
 | 
					 * Define structure of POSIX 'ustar' tar header.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@ -158,15 +148,9 @@ static int	archive_write_ustar_finish(struct archive_write *);
 | 
				
			|||||||
static int	archive_write_ustar_finish_entry(struct archive_write *);
 | 
					static int	archive_write_ustar_finish_entry(struct archive_write *);
 | 
				
			||||||
static int	archive_write_ustar_header(struct archive_write *,
 | 
					static int	archive_write_ustar_header(struct archive_write *,
 | 
				
			||||||
		    struct archive_entry *entry);
 | 
							    struct archive_entry *entry);
 | 
				
			||||||
#ifndef __minix
 | 
					 | 
				
			||||||
static int	format_256(int64_t, char *, int);
 | 
					static int	format_256(int64_t, char *, int);
 | 
				
			||||||
static int	format_number(int64_t, char *, int size, int max, int strict);
 | 
					static int	format_number(int64_t, char *, int size, int max, int strict);
 | 
				
			||||||
static int	format_octal(int64_t, char *, int);
 | 
					static int	format_octal(int64_t, char *, int);
 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
static int	format_256(int32_t, char *, int);
 | 
					 | 
				
			||||||
static int	format_number(int32_t, char *, int size, int max, int strict);
 | 
					 | 
				
			||||||
static int	format_octal(int32_t, char *, int);
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
static int	write_nulls(struct archive_write *a, size_t);
 | 
					static int	write_nulls(struct archive_write *a, size_t);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
@ -255,11 +239,7 @@ archive_write_ustar_header(struct archive_write *a, struct archive_entry *entry)
 | 
				
			|||||||
		ret = ret2;
 | 
							ret = ret2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ustar->entry_bytes_remaining = archive_entry_size(entry);
 | 
						ustar->entry_bytes_remaining = archive_entry_size(entry);
 | 
				
			||||||
#ifndef __minix
 | 
					 | 
				
			||||||
	ustar->entry_padding = 0x1ff & (-(int64_t)ustar->entry_bytes_remaining);
 | 
						ustar->entry_padding = 0x1ff & (-(int64_t)ustar->entry_bytes_remaining);
 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
	ustar->entry_padding = 0x1ff & (-(int32_t)ustar->entry_bytes_remaining);
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
	return (ret);
 | 
						return (ret);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -460,7 +440,6 @@ __archive_write_format_header_ustar(struct archive_write *a, char h[512],
 | 
				
			|||||||
/*
 | 
					/*
 | 
				
			||||||
 * Format a number into a field, with some intelligence.
 | 
					 * Format a number into a field, with some intelligence.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
#ifndef __minix
 | 
					 | 
				
			||||||
static int
 | 
					static int
 | 
				
			||||||
format_number(int64_t v, char *p, int s, int maxsize, int strict)
 | 
					format_number(int64_t v, char *p, int s, int maxsize, int strict)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -490,54 +469,10 @@ format_number(int64_t v, char *p, int s, int maxsize, int strict)
 | 
				
			|||||||
	/* Base-256 can handle any number, positive or negative. */
 | 
						/* Base-256 can handle any number, positive or negative. */
 | 
				
			||||||
	return (format_256(v, p, maxsize));
 | 
						return (format_256(v, p, maxsize));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
static int
 | 
					 | 
				
			||||||
format_number(int32_t v, char *p, int s, int maxsize, int strict)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	/* s could be 11 in some cases causing limit to be shifted by 
 | 
					 | 
				
			||||||
	 * greater than 32 bits so we need a u64_t here
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	u64_t limit;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if !defined(__LONG_LONG_SUPPORTED)
 | 
					 | 
				
			||||||
	limit = lshift64(cvu64(1), s*3);
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
	limit = (1ull << (s*3));
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* "Strict" only permits octal values with proper termination. */
 | 
					 | 
				
			||||||
	if (strict)
 | 
					 | 
				
			||||||
		return (format_octal(v, p, s));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/*
 | 
					 | 
				
			||||||
	 * In non-strict mode, we allow the number to overwrite one or
 | 
					 | 
				
			||||||
	 * more bytes of the field termination.  Even old tar
 | 
					 | 
				
			||||||
	 * implementations should be able to handle this with no
 | 
					 | 
				
			||||||
	 * problem.
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	if (v >= 0) {
 | 
					 | 
				
			||||||
		while (s <= maxsize) {
 | 
					 | 
				
			||||||
			/* if (v < limit) */
 | 
					 | 
				
			||||||
			if (cmp64ul(limit, v) > 0)
 | 
					 | 
				
			||||||
				return (format_octal(v, p, s));
 | 
					 | 
				
			||||||
			s++;
 | 
					 | 
				
			||||||
#if !defined(__LONG_LONG_SUPPORTED)
 | 
					 | 
				
			||||||
			limit = lshift64(limit, 3);
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
			limit <<= 3;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* Base-256 can handle any number, positive or negative. */
 | 
					 | 
				
			||||||
	return (format_256(v, p, maxsize));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Format a number into the specified field using base-256.
 | 
					 * Format a number into the specified field using base-256.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
#ifndef __minix
 | 
					 | 
				
			||||||
static int
 | 
					static int
 | 
				
			||||||
format_256(int64_t v, char *p, int s)
 | 
					format_256(int64_t v, char *p, int s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -549,23 +484,10 @@ format_256(int64_t v, char *p, int s)
 | 
				
			|||||||
	*p |= 0x80; /* Set the base-256 marker bit. */
 | 
						*p |= 0x80; /* Set the base-256 marker bit. */
 | 
				
			||||||
	return (0);
 | 
						return (0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#else
 | 
					
 | 
				
			||||||
static int
 | 
					 | 
				
			||||||
format_256(int32_t v, char *p, int s)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	p += s;
 | 
					 | 
				
			||||||
	while (s-- > 0) {
 | 
					 | 
				
			||||||
		*--p = (char)(v & 0xff);
 | 
					 | 
				
			||||||
		v >>= 8;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	*p |= 0x80; /* Set the base-256 marker bit. */
 | 
					 | 
				
			||||||
	return (0);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Format a number into the specified field.
 | 
					 * Format a number into the specified field.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
#ifndef __minix
 | 
					 | 
				
			||||||
static int
 | 
					static int
 | 
				
			||||||
format_octal(int64_t v, char *p, int s)
 | 
					format_octal(int64_t v, char *p, int s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -595,37 +517,6 @@ format_octal(int64_t v, char *p, int s)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	return (-1);
 | 
						return (-1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
static int
 | 
					 | 
				
			||||||
format_octal(int32_t v, char *p, int s)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	int len;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	len = s;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* Octal values can't be negative, so use 0. */
 | 
					 | 
				
			||||||
	if (v < 0) {
 | 
					 | 
				
			||||||
		while (len-- > 0)
 | 
					 | 
				
			||||||
			*p++ = '0';
 | 
					 | 
				
			||||||
		return (-1);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	p += s;		/* Start at the end and work backwards. */
 | 
					 | 
				
			||||||
	while (s-- > 0) {
 | 
					 | 
				
			||||||
		*--p = (char)('0' + (v & 7));
 | 
					 | 
				
			||||||
		v >>= 3;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (v == 0)
 | 
					 | 
				
			||||||
		return (0);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* If it overflowed, fill field with max value. */
 | 
					 | 
				
			||||||
	while (len-- > 0)
 | 
					 | 
				
			||||||
		*p++ = '7';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return (-1);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int
 | 
					static int
 | 
				
			||||||
archive_write_ustar_finish(struct archive_write *a)
 | 
					archive_write_ustar_finish(struct archive_write *a)
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +0,0 @@
 | 
				
			|||||||
#ifndef MINIX_UTILS_H
 | 
					 | 
				
			||||||
#define MINIX_UTILS_H
 | 
					 | 
				
			||||||
#include <minix/u64.h>
 | 
					 | 
				
			||||||
#if !defined(__LONG_LONG_SUPPORTED)
 | 
					 | 
				
			||||||
u64_t lshift64(u64_t x, unsigned short b);
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
@ -3,82 +3,6 @@
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
#include <minix/u64.h>
 | 
					#include <minix/u64.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if !defined(__LONG_LONG_SUPPORTED)
 | 
					 | 
				
			||||||
u64_t rrotate64(u64_t x, unsigned short b)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	u64_t r, t;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	b %= 64;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if(b == 32) {
 | 
					 | 
				
			||||||
		r.lo = x.hi;
 | 
					 | 
				
			||||||
		r.hi = x.lo;
 | 
					 | 
				
			||||||
		return r;
 | 
					 | 
				
			||||||
	}else if(b < 32) {
 | 
					 | 
				
			||||||
		r.lo = (x.lo >> b) | (x.hi << (32 - b));		
 | 
					 | 
				
			||||||
		r.hi = (x.hi >> b) | (x.lo << (32 - b));		
 | 
					 | 
				
			||||||
		return r;
 | 
					 | 
				
			||||||
	}else {
 | 
					 | 
				
			||||||
		/* Rotate by 32 bits first then rotate by remaining */
 | 
					 | 
				
			||||||
		t.lo = x.hi;
 | 
					 | 
				
			||||||
		t.hi = x.lo;
 | 
					 | 
				
			||||||
		b = b - 32;
 | 
					 | 
				
			||||||
		r.lo = (t.lo >> b) | (t.hi << (32 - b));		
 | 
					 | 
				
			||||||
		r.hi = (t.hi >> b) | (t.lo << (32 - b));		
 | 
					 | 
				
			||||||
		return r;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
u64_t rshift64(u64_t x, unsigned short b)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	u64_t r;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if(b >= 64)
 | 
					 | 
				
			||||||
		return make64(0,0);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if(b >= 32) {
 | 
					 | 
				
			||||||
		r.hi = 0;
 | 
					 | 
				
			||||||
		r.lo = x.hi >> (b - 32);
 | 
					 | 
				
			||||||
	}else {
 | 
					 | 
				
			||||||
		r.lo = (x.lo >> b) | (x.hi << (32 - b));		
 | 
					 | 
				
			||||||
		r.hi = (x.hi >> b);		
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return r;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
u64_t xor64(u64_t a, u64_t b)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	u64_t r;
 | 
					 | 
				
			||||||
	r.hi = a.hi ^ b.hi;
 | 
					 | 
				
			||||||
	r.lo = a.lo ^ b.lo;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return r;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
u64_t and64(u64_t a, u64_t b)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	u64_t r;
 | 
					 | 
				
			||||||
	r.hi = a.hi & b.hi;
 | 
					 | 
				
			||||||
	r.lo = a.lo & b.lo;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return r;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
u64_t not64(u64_t a)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	u64_t r;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	r.hi = ~a.hi;
 | 
					 | 
				
			||||||
	r.lo = ~a.lo;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return r;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if !defined(__LONG_LONG_SUPPORTED)
 | 
					 | 
				
			||||||
#error "ERROR: These functions require long long support"
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
u64_t rrotate64(u64_t x, unsigned short b)
 | 
					u64_t rrotate64(u64_t x, unsigned short b)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	b %= 64;
 | 
						b %= 64;
 | 
				
			||||||
@ -108,5 +32,3 @@ u64_t not64(u64_t a)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
	return ~a;
 | 
						return ~a;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
				
			|||||||
@ -29,8 +29,6 @@
 | 
				
			|||||||
#undef	TYPEU
 | 
					#undef	TYPEU
 | 
				
			||||||
#undef	TYPE_FUNC
 | 
					#undef	TYPE_FUNC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __LONG_LONG_SUPPORTED
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* test strtoll */
 | 
					/* test strtoll */
 | 
				
			||||||
#define	TYPE        long long
 | 
					#define	TYPE        long long
 | 
				
			||||||
#define	TYPEU       unsigned long long
 | 
					#define	TYPEU       unsigned long long
 | 
				
			||||||
@ -49,8 +47,6 @@
 | 
				
			|||||||
#undef	TYPEU
 | 
					#undef	TYPEU
 | 
				
			||||||
#undef	TYPE_FUNC
 | 
					#undef	TYPE_FUNC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif /* defined(__LONG_LONG_SUPPORTED) */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
int main(int argc, char **argv)
 | 
					int main(int argc, char **argv)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	start(45);
 | 
						start(45);
 | 
				
			||||||
 | 
				
			|||||||
@ -6,9 +6,7 @@
 | 
				
			|||||||
#include <string.h>
 | 
					#include <string.h>
 | 
				
			||||||
#include <unistd.h>
 | 
					#include <unistd.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(__LONG_LONG_SUPPORTED) || (_WORD_SIZE > 2 && __L64)
 | 
					 | 
				
			||||||
#define TEST_64_BIT
 | 
					#define TEST_64_BIT
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define ERR e(__LINE__)
 | 
					#define ERR e(__LINE__)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user