X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=tfc_base64.c;h=2498004d7211e13c164f9839022b0f8686b9815e;hb=2da8baf01e863c80eccdeb5f428f16e1cf3a0473;hp=b92ac9676a3bc567aaf97f167201cb1bb1b0e8d0;hpb=efa545d64b910923248233618e774ca3b87efebb;p=tfcrypt.git diff --git a/tfc_base64.c b/tfc_base64.c index b92ac96..2498004 100644 --- 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; + 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; @@ -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: + case TFC_ERRACT_LSYNC: 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; }