projects
/
u
/
mdw
/
catacomb
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
cc.h: Reorder the declarations.
[u/mdw/catacomb]
/
hashsum.c
diff --git
a/hashsum.c
b/hashsum.c
index
c9bb3ec
..
554b079
100644
(file)
--- a/
hashsum.c
+++ b/
hashsum.c
@@
-7,7
+7,7
@@
* (c) 2000 Straylight/Edgeware
*/
* (c) 2000 Straylight/Edgeware
*/
-/*----- Licensing notice --------------------------------------------------*
+/*----- Licensing notice --------------------------------------------------*
*
* This file is part of Catacomb.
*
*
* This file is part of Catacomb.
*
@@
-15,12
+15,12
@@
* it under the terms of the GNU Library General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
* it under the terms of the GNU Library General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
- *
+ *
* Catacomb is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Library General Public License for more details.
* Catacomb is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Library General Public License for more details.
- *
+ *
* You should have received a copy of the GNU Library General Public
* License along with Catacomb; if not, write to the Free
* Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
* You should have received a copy of the GNU Library General Public
* License along with Catacomb; if not, write to the Free
* Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
@@
-29,6
+29,8
@@
/*----- Header files ------------------------------------------------------*/
/*----- Header files ------------------------------------------------------*/
+#define _FILE_OFFSET_BITS 64
+
#include "config.h"
#include <assert.h>
#include "config.h"
#include <assert.h>
@@
-64,6
+66,7
@@
#define f_oddhash 64u
#define f_escape 128u
#define f_oddenc 256u
#define f_oddhash 64u
#define f_escape 128u
#define f_oddenc 256u
+#define f_progress 512u
/*----- Encoding and decoding ---------------------------------------------*/
/*----- Encoding and decoding ---------------------------------------------*/
@@
-94,7
+97,7
@@
static size_t gethex(const char *p, octet *q, size_t sz, char **pp)
}
if (pp)
*pp = (char *)p;
}
if (pp)
*pp = (char *)p;
- return (i);
+ return (i);
}
/* --- Base64 encoding --- */
}
/* --- Base64 encoding --- */
@@
-206,21
+209,29
@@
static const encodeops *getencoding(const char *ename)
static int fhash(const char *file, unsigned f, const gchash *gch, void *buf)
{
FILE *fp;
static int fhash(const char *file, unsigned f, const gchash *gch, void *buf)
{
FILE *fp;
- char fbuf[
BUFSIZ
];
+ char fbuf[
1024 * 128
];
size_t sz;
ghash *h;
int e;
size_t sz;
ghash *h;
int e;
+ fprogress ff;
- if (!file)
+ if (!file
|| strcmp(file, "-") == 0
)
fp = stdin;
else if ((fp = fopen(file, f & f_binary ? "rb" : "r")) == 0)
return (-1);
fp = stdin;
else if ((fp = fopen(file, f & f_binary ? "rb" : "r")) == 0)
return (-1);
+ if (f & f_progress) {
+ if (fprogress_init(&ff, file, fp)) return (-1);
+ }
+
h = GH_INIT(gch);
h = GH_INIT(gch);
- while ((sz = fread(fbuf, 1, sizeof(fbuf), fp)) > 0)
+ while ((sz = fread(fbuf, 1, sizeof(fbuf), fp)) > 0)
{
GH_HASH(h, fbuf, sz);
GH_HASH(h, fbuf, sz);
+ if (f & f_progress) fprogress_update(&ff, sz);
+ }
GH_DONE(h, buf);
GH_DESTROY(h);
GH_DONE(h, buf);
GH_DESTROY(h);
+ if (f & f_progress) fprogress_done(&ff);
e = ferror(fp);
if (file)
fclose(fp);
e = ferror(fp);
if (file)
fclose(fp);
@@
-441,7
+452,7
@@
static int checkhash(const char *file, unsigned f,
unsigned long n = 0, nfail = 0;
octet *buf = xmalloc(2 * gch->hashsz);
unsigned long n = 0, nfail = 0;
octet *buf = xmalloc(2 * gch->hashsz);
- if (!file)
+ if (!file
|| strcmp(file, "-") == 0
)
fp = stdin;
else if ((fp = fopen(file, f & f_raw ? "r" : "rb")) == 0) {
moan("couldn't open `%s': %s", file, strerror(errno));
fp = stdin;
else if ((fp = fopen(file, f & f_raw ? "r" : "rb")) == 0) {
moan("couldn't open `%s': %s", file, strerror(errno));
@@
-571,7
+582,7
@@
static int hashfiles(const char *file, unsigned f,
int rc = 0;
int rrc;
int rc = 0;
int rrc;
- if (!file)
+ if (!file
|| strcmp(file, "-") == 0
)
fp = stdin;
else if ((fp = fopen(file, f & f_raw ? "r" : "rb")) == 0) {
moan("couldn't open `%s': %s", file, strerror(errno));
fp = stdin;
else if ((fp = fopen(file, f & f_raw ? "r" : "rb")) == 0) {
moan("couldn't open `%s': %s", file, strerror(errno));
@@
-691,10
+702,11
@@
int main(int argc, char *argv[])
{ "check", 0, 0, 'c' },
{ "binary", 0, 0, 'b' },
{ "verbose", 0, 0, 'v' },
{ "check", 0, 0, 'c' },
{ "binary", 0, 0, 'b' },
{ "verbose", 0, 0, 'v' },
+ { "progress", 0, 0, 'p' },
{ 0, 0, 0, 0 }
};
{ 0, 0, 0, 0 }
};
- int i = mdwopt(argc, argv, "hVu a:E:l f0 ecbv", opts, 0, 0, 0);
+ int i = mdwopt(argc, argv, "hVu a:E:l f0 ecbv
p
", opts, 0, 0, 0);
if (i < 0)
break;
if (i < 0)
break;
@@
-738,6
+750,9
@@
int main(int argc, char *argv[])
case 'v':
f |= f_verbose;
break;
case 'v':
f |= f_verbose;
break;
+ case 'p':
+ f |= f_progress;
+ break;
default:
f |= f_bogus;
break;
default:
f |= f_bogus;
break;
@@
-753,6
+768,11
@@
int main(int argc, char *argv[])
/* --- Generate output --- */
/* --- Generate output --- */
+ if (!(f & f_check) && (argc || (f & f_files))) {
+ if (f & f_oddhash) printf("#hash %s\n", gch->name);
+ if (f & f_oddenc) printf("#encoding %s\n", e->name);
+ if (f & f_escape) fputs("#escape\n", stdout);
+ }
if (!argc)
rc = hashsum(0, f, gch, e);
else {
if (!argc)
rc = hashsum(0, f, gch, e);
else {
@@
-760,11
+780,6
@@
int main(int argc, char *argv[])
int rrc;
rc = 0;
int rrc;
rc = 0;
- if (!(f & f_check)) {
- if (f & f_oddhash) printf("#hash %s\n", gch->name);
- if (f & f_oddenc) printf("#encoding %s\n", e->name);
- if (f & f_escape) fputs("#escape\n", stdout);
- }
for (i = 0; i < argc; i++) {
if ((rrc = hashsum(argv[i], f, gch, e)) != 0)
rc = rrc;
for (i = 0; i < argc; i++) {
if ((rrc = hashsum(argv[i], f, gch, e)) != 0)
rc = rrc;