projects
/
tfcrypt.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
tfc_random: proper write error handling plus handling -E option.
[tfcrypt.git]
/
tfc_base64.c
diff --git
a/tfc_base64.c
b/tfc_base64.c
index b92ac9676a3bc567aaf97f167201cb1bb1b0e8d0..2498004d7211e13c164f9839022b0f8686b9815e 100644
(file)
--- a/
tfc_base64.c
+++ b/
tfc_base64.c
@@
-68,6
+68,7
@@
void do_edbase64(char **fargv)
pblk = srcblk;
lblock = lrem = do_edcrypt == TFC_DO_DECRYPT ? TFC_B64_DWIDTH : TFC_B64_EWIDTH;
ldone = 0;
pblk = srcblk;
lblock = lrem = do_edcrypt == TFC_DO_DECRYPT ? TFC_B64_DWIDTH : TFC_B64_EWIDTH;
ldone = 0;
+ if (error_action == TFC_ERRACT_SYNC) rdpos = tfc_fdgetpos(sfd);
_again: lio = read(sfd, pblk, lrem);
if (lio == 0) do_stop = YES;
if (lio != NOSIZE) ldone += lio;
_again: lio = read(sfd, pblk, lrem);
if (lio == 0) do_stop = YES;
if (lio != NOSIZE) ldone += lio;
@@
-77,10
+78,12
@@
_again: lio = read(sfd, pblk, lrem);
switch (error_action) {
case TFC_ERRACT_CONT: xerror(YES, NO, NO, "%s", fargv[0]); goto _again; break;
case TFC_ERRACT_SYNC:
switch (error_action) {
case TFC_ERRACT_CONT: xerror(YES, NO, NO, "%s", fargv[0]); goto _again; break;
case TFC_ERRACT_SYNC:
+ case TFC_ERRACT_LSYNC:
xerror(YES, NO, NO, "%s", fargv[0]);
lio = ldone = lrem = lblock;
memset(srcblk, 0, lio);
xerror(YES, NO, NO, "%s", fargv[0]);
lio = ldone = lrem = lblock;
memset(srcblk, 0, lio);
- lseek(sfd, lio, SEEK_CUR);
+ if (rdpos == NOFSIZE) lseek(sfd, lio, SEEK_CUR);
+ else lseek(sfd, rdpos + lio, SEEK_SET);
break;
default: xerror(NO, NO, NO, "%s", fargv[0]); break;
}
break;
default: xerror(NO, NO, NO, "%s", fargv[0]); break;
}