summaryrefslogtreecommitdiff
path: root/ar
diff options
context:
space:
mode:
authorRobert de Bath <rdebath@poboxes.com>2002-02-17 23:02:29 +0100
committerLubomir Rintel <lkundrak@v3.sk>2013-10-23 23:48:46 +0200
commitdf538463687d768b6ee8247ff4412b78850e7404 (patch)
tree52f42c02ef8139e5d73a8504e1bb3e896f3c0bc9 /ar
parentd91fa39567f5659e3931cf61517d62fddcd87570 (diff)
downloaddev86-df538463687d768b6ee8247ff4412b78850e7404.tar.gz
Import Dev86src-0.16.2.tar.gzv0.16.2
Diffstat (limited to 'ar')
-rwxr-xr-xar/arbin0 -> 58692 bytes
-rw-r--r--ar/ar.c74
2 files changed, 50 insertions, 24 deletions
diff --git a/ar/ar b/ar/ar
new file mode 100755
index 0000000..48da838
--- /dev/null
+++ b/ar/ar
Binary files differ
diff --git a/ar/ar.c b/ar/ar.c
index e57ddfb..319331d 100644
--- a/ar/ar.c
+++ b/ar/ar.c
@@ -23,6 +23,7 @@
#include <unistd.h>
#include <string.h>
#include <utime.h>
+#include <sys/time.h>
#endif
#include <fcntl.h>
#include <time.h>
@@ -234,7 +235,7 @@ void print_contents ();
void write_symdef_member ();
void read_old_symdefs ();
void two_operations ();
-void usage (), fatal (), error (), error_with_file ();
+void usage (), fatal (), error (), error3(), error_with_file ();
void perror_with_name (), pfatal_with_name ();
void write_archive ();
void touch_symdef_member ();
@@ -245,14 +246,17 @@ char *basename ();
void print_modes ();
char *make_tempname ();
void copy_out_member ();
+#define const
#else
/* Grrr. */
-extern void error ();
-extern void fatal ();
-extern void extract_members ();
+extern void error (char * s1, char * s2);
+extern void error3 (char * s1, char * s2, char * s3);
+extern void fatal (char * s1, char * s2);
+extern void extract_members (void (*function) (struct member_desc member, FILE *istream));
+extern void scan (void (*function) (struct member_desc member, FILE *istream), int crflag);
extern char *basename (char *path);
-extern char *concat (char *s1, char *s2, char *s3);
+extern char *concat (const char *s1, const char *s2, const char *s3);
extern char *make_tempname (char *name);
extern char *xmalloc (unsigned int size);
extern char *xrealloc (char *ptr, unsigned int size);
@@ -266,7 +270,7 @@ extern struct mapelt *find_mapelt_noerror (struct mapelt *map, register char *na
extern struct mapelt *last_mapelt (struct mapelt *map);
extern struct mapelt *make_map (int nonexistent_ok);
extern struct mapelt *prev_mapelt (struct mapelt *map, struct mapelt *elt);
-extern void add_to_map (struct member_desc member);
+extern void add_to_map (struct member_desc member, FILE * istream);
extern void close_archive (void);
extern void copy_out_member (struct mapelt *mapelt, int archive_indesc, int outdesc, char *outname);
extern void delete_from_map (char *name, struct mapelt *map);
@@ -277,11 +281,11 @@ extern void header_from_map (struct ar_hdr *header, struct mapelt *mapelt);
extern void lock_for_update (void);
extern void make_new_symdefs (struct mapelt *mapelt, int archive_indesc);
extern void move_members (void);
-extern void mywrite (int desc, char *buf, int bytes, char *file);
+extern void mywrite (int desc, void *buf, int bytes, char *file);
extern void perror_with_name (char *name);
extern void pfatal_with_name (char *name);
extern void print_contents (struct member_desc member, FILE *istream);
-extern void print_descr (struct member_desc member);
+extern void print_descr (struct member_desc member, FILE * instream);
extern void print_modes (int modes);
extern void quick_append (void);
extern void read_old_symdefs (struct mapelt *map, int archive_indesc);
@@ -298,13 +302,14 @@ extern void write_symdef_member (struct mapelt *mapelt, struct mapelt *map, int
FILE is the name of the file (for error messages). */
void
-mywrite (desc, buf, bytes, file)
+mywrite (desc, pbuf, bytes, file)
int desc;
- char *buf;
+ void *pbuf;
int bytes;
char *file;
{
register int val;
+ register char * buf = pbuf;
while (bytes > 0)
{
@@ -349,7 +354,7 @@ main (argc, argv)
if (*p == '-')
p++;
- while (c = *p++)
+ while ((c = *p++))
{
switch (c)
{
@@ -445,10 +450,12 @@ main (argc, argv)
i = 2;
if (postype != POS_DEFAULT)
+ {
if (i < argc)
posname = argv[i++];
else
usage ("no position operand", 0);
+ }
if (i >= argc)
usage ("no archive specified", 0);
@@ -500,7 +507,7 @@ main (argc, argv)
break;
default:
- usage ("invalid operation %d", operation);
+ usage ("invalid operation %d", (void*)operation);
}
exit (0);
@@ -514,7 +521,11 @@ two_operations ()
void
scan (function, crflag)
+#ifdef __STDC__
+ void (*function) (struct member_desc member, FILE *istream);
+#else
void (*function) ();
+#endif
int crflag;
{
FILE *arcstream = fopen (archive, "r");
@@ -597,8 +608,9 @@ scan (function, crflag)
}
void
-print_descr (member)
+print_descr (member, instream)
struct member_desc member;
+ FILE * instream;
{
char *timestring;
if (!verbose)
@@ -673,7 +685,7 @@ extract_member (member, istream)
if (preserve_dates)
{
-#if defined(USG) || defined(linux) || defined(__BCC__)
+#if defined(USG) || defined(__BCC__)
long tv[2];
tv[0] = member.date;
tv[1] = member.date;
@@ -735,8 +747,9 @@ make_map (nonexistent_ok)
}
void
-add_to_map (member)
+add_to_map (member, istream)
struct member_desc member;
+ FILE * istream;
{
struct mapelt *mapelt = (struct mapelt *) xmalloc (sizeof (struct mapelt));
mapelt->info = member;
@@ -1075,7 +1088,7 @@ header_from_map (header, mapelt)
header->ar_name[sizeof (header->ar_name) - 2] = 'o';
}
header->ar_name[sizeof (header->ar_name) - 1] = '\0';
- error ("member name `%s' truncated to `%s'",
+ error3 ("member name `%s' truncated to `%s'",
mapelt->info.name, header->ar_name);
}
#if defined(USG) || defined(HAVE_TRAILING_SLASH_IN_NAME)
@@ -1275,7 +1288,7 @@ move_members ()
{
struct mapelt *map = make_map (0);
char **p;
- struct mapelt *after_mapelt;
+ struct mapelt *after_mapelt = 0;
struct mapelt mapstart;
struct mapelt *change_map;
@@ -1337,7 +1350,7 @@ replace_members ()
{
struct mapelt *map = make_map (1);
struct mapelt mapstart;
- struct mapelt *after_mapelt;
+ struct mapelt *after_mapelt = 0;
struct mapelt *change_map;
char **p;
int changed;
@@ -1469,7 +1482,11 @@ insert_in_map (name, map, after)
void
extract_members (function)
+#ifdef __STDC__
+ void (*function) (struct member_desc member, FILE *istream);
+#else
void (*function) ();
+#endif
{
struct mapelt *map;
FILE *arcstream;
@@ -1954,7 +1971,7 @@ update_symdefs (map, archive_indesc)
}
else if (pos > old_strings_size)
fatal ("Old archive's string size was %u too small.",
- pos - old_strings_size);
+ (void*)(pos - old_strings_size));
for (tail = map; tail != 0; tail = tail->next)
if (tail->info.symdefs)
@@ -2000,11 +2017,20 @@ fatal (s1, s2)
/* Print error message. `s1' is printf control string, the rest are args. */
void
-error (s1, s2, s3, s4, s5)
- char *s1, *s2, *s3, *s4, *s5;
+error (s1, s2)
+ char *s1, *s2;
+{
+ fprintf (stderr, "%s: ", program_name);
+ fprintf (stderr, s1, s2);
+ fprintf (stderr, "\n");
+}
+
+void
+error3 (s1, s2, s3)
+ char *s1, *s2, *s3;
{
fprintf (stderr, "%s: ", program_name);
- fprintf (stderr, s1, s2, s3, s4, s5);
+ fprintf (stderr, s1, s2, s3);
fprintf (stderr, "\n");
}
@@ -2053,7 +2079,7 @@ pfatal_with_name (name)
char *
concat (s1, s2, s3)
- char *s1, *s2, *s3;
+ const char *s1, *s2, *s3;
{
int len1 = strlen (s1), len2 = strlen (s2), len3 = strlen (s3);
char *result = (char *) xmalloc (len1 + len2 + len3 + 1);
@@ -2089,7 +2115,7 @@ xrealloc (ptr, size)
{
char *result = realloc (ptr, size);
if (result == 0)
- fatal ("virtual memory exhausted");
+ fatal ("virtual memory exhausted", 0);
return result;
}