File hfsutils-3.2.6.dif of Package hfsutils
--- Makefile.in
+++ Makefile.in 2000/11/03 09:01:23
@@ -111,43 +111,43 @@
install :: @INSTALL_TARGETS@
install_cli :: all_cli
- $(BININSTALL) $(HFSUTIL) "$(BINDEST)/."
+ $(BININSTALL) $(HFSUTIL) $(DESTDIR)"$(BINDEST)/."
for file in $(CLITARGETS); do \
- $(HARDLINK) "$(BINDEST)/$(HFSUTIL)" "$(BINDEST)/$$file"; \
+ $(HARDLINK) $(DESTDIR)"$(BINDEST)/$(HFSUTIL)" $(DESTDIR)"$(BINDEST)/$$file"; \
done
- rm -f "$(BINDEST)/$(HFSUTIL)"
+ rm -f $(DESTDIR)"$(BINDEST)/$(HFSUTIL)"
for file in $(GENERALDOCS) $(CLIDOCS); do \
$(LIBINSTALL) doc/man/$$file \
- "$(MANDEST)/man$(MANEXT)/`basename $$file .1`.$(MANEXT)"; \
+ $(DESTDIR)"$(MANDEST)/man$(MANEXT)/`basename $$file .1`.$(MANEXT)"; \
done
install_tcl :: all_tcl
for file in $(TCLTARGETS); do \
- $(BININSTALL) $$file "$(BINDEST)/."; \
+ $(BININSTALL) $$file $(DESTDIR)"$(BINDEST)/."; \
done
- if [ -f "$(BINDEST)/hfs" ]; then \
- sed -e '1d' "$(BINDEST)/hfs" > "$(BINDEST)/hfs.new"; \
- $(BININSTALL) "$(BINDEST)/hfs.new" "$(BINDEST)/hfs"; \
- rm -f "$(BINDEST)/hfs.new"; \
+ if [ -f $(DESTDIR)"$(BINDEST)/hfs" ]; then \
+ sed -e '1d' $(DESTDIR)"$(BINDEST)/hfs" > $(DESTDIR)"$(BINDEST)/hfs.new"; \
+ $(BININSTALL) $(DESTDIR)"$(BINDEST)/hfs.new" $(DESTDIR)"$(BINDEST)/hfs"; \
+ rm -f $(DESTDIR)"$(BINDEST)/hfs.new"; \
fi
for file in $(TCLDOCS); do \
$(LIBINSTALL) doc/man/$$file \
- "$(MANDEST)/man$(MANEXT)/`basename $$file .1`.$(MANEXT)"; \
+ $(DESTDIR)"$(MANDEST)/man$(MANEXT)/`basename $$file .1`.$(MANEXT)"; \
done
install_tk :: all_tk
for file in $(TKTARGETS); do \
- $(BININSTALL) $$file "$(BINDEST)/."; \
+ $(BININSTALL) $$file $(DESTDIR)"$(BINDEST)/."; \
done
for file in $(TKDOCS); do \
$(LIBINSTALL) doc/man/$$file \
- "$(MANDEST)/man$(MANEXT)/`basename $$file .1`.$(MANEXT)"; \
+ $(DESTDIR)"$(MANDEST)/man$(MANEXT)/`basename $$file .1`.$(MANEXT)"; \
done
install_lib :: all_lib
--- copyin.c
+++ copyin.c 2000/11/03 08:57:59
@@ -67,7 +67,7 @@
* DESCRIPTION: copy a single fork for MacBinary II
*/
static
-int fork_macb(int ifile, hfsfile *ofile, unsigned long size)
+int fork_macb(const char *srcname, const char *dstname, int ifile, hfsfile *ofile, unsigned long size)
{
char buf[HFS_BLOCKSZ * 4];
unsigned long chunk, bytes;
@@ -81,11 +81,13 @@
if (bytes == (unsigned long) -1)
{
ERROR(errno, "error reading data");
+ hfs_error_path = srcname;
return -1;
}
else if (bytes != chunk)
{
ERROR(EIO, "read incomplete chunk");
+ hfs_error_path = srcname;
return -1;
}
@@ -95,11 +97,13 @@
if (bytes == (unsigned long) -1)
{
ERROR(errno, hfs_error);
+ hfs_error_path = dstname;
return -1;
}
else if (bytes != chunk)
{
ERROR(EIO, "wrote incomplete chunk");
+ hfs_error_path = dstname;
return -1;
}
@@ -114,26 +118,28 @@
* DESCRIPTION: perform copy using MacBinary II translation
*/
static
-int do_macb(int ifile, hfsfile *ofile,
+int do_macb(const char *srcname, const char *dstname, int ifile, hfsfile *ofile,
unsigned long dsize, unsigned long rsize)
{
if (hfs_setfork(ofile, 0) == -1)
{
ERROR(errno, hfs_error);
+ hfs_error_path = dstname;
return -1;
}
- if (fork_macb(ifile, ofile, dsize) == -1)
+ if (fork_macb(srcname, dstname, ifile, ofile, dsize) == -1)
return -1;
if (hfs_setfork(ofile, 1) == -1)
{
ERROR(errno, hfs_error);
+ hfs_error_path = dstname;
return -1;
}
- if (fork_macb(ifile, ofile, rsize) == -1)
- return -1;
+ if (fork_macb(srcname, dstname, ifile, ofile, rsize) == -1)
+ return -1;
return 0;
}
@@ -221,7 +227,7 @@
* DESCRIPTION: perform copy using text translation
*/
static
-int do_text(int ifile, hfsfile *ofile)
+int do_text(const char *srcname, const char *dstname, int ifile, hfsfile *ofile)
{
char buf[HFS_BLOCKSZ * 4], *ptr;
long chunk, bytes;
@@ -233,6 +239,7 @@
if (chunk == -1)
{
ERROR(errno, "error reading source file");
+ hfs_error_path = srcname;
return -1;
}
else if (chunk == 0)
@@ -249,6 +256,7 @@
if (ptr == 0)
{
ERROR(ENOMEM, 0);
+ hfs_error_path = srcname;
return -1;
}
@@ -258,11 +266,13 @@
if (bytes == -1)
{
ERROR(errno, hfs_error);
+ hfs_error_path = dstname;
return -1;
}
else if (bytes != len)
{
ERROR(EIO, "wrote incomplete chunk");
+ hfs_error_path = dstname;
return -1;
}
}
@@ -275,7 +285,7 @@
* DESCRIPTION: perform copy using no translation
*/
static
-int do_raw(int ifile, hfsfile *ofile)
+int do_raw(const char *srcname, const char *dstname, int ifile, hfsfile *ofile)
{
char buf[HFS_BLOCKSZ * 4];
long chunk, bytes;
@@ -286,6 +296,7 @@
if (chunk == -1)
{
ERROR(errno, "error reading source file");
+ hfs_error_path = srcname;
return -1;
}
else if (chunk == 0)
@@ -295,11 +306,13 @@
if (bytes == -1)
{
ERROR(errno, hfs_error);
+ hfs_error_path = dstname;
return -1;
}
else if (bytes != chunk)
{
ERROR(EIO, "wrote incomplete chunk");
+ hfs_error_path = dstname;
return -1;
}
}
@@ -436,17 +449,19 @@
* DESCRIPTION: close source and destination files
*/
static
-void closefiles(int ifile, hfsfile *ofile, int *result)
+void closefiles(const char *srcname, const char *dstname, int ifile, hfsfile *ofile, int *result)
{
if (ofile && hfs_close(ofile) == -1 && *result == 0)
{
ERROR(errno, hfs_error);
+ hfs_error_path = dstname;
*result = -1;
}
if (close(ifile) == -1 && *result == 0)
{
ERROR(errno, "error closing source file");
+ hfs_error_path = srcname;
*result = -1;
}
}
@@ -470,13 +485,17 @@
ifile = opensrc(srcname, &dsthint, ".bin", 1);
if (ifile == -1)
- return -1;
+ {
+ hfs_error_path = srcname;
+ return -1;
+ }
if (read(ifile, buf, MACB_BLOCKSZ) < MACB_BLOCKSZ)
{
ERROR(errno, "error reading MacBinary file header");
close(ifile);
+ hfs_error_path = srcname;
return -1;
}
@@ -485,6 +504,7 @@
ERROR(EINVAL, "invalid MacBinary file header");
close(ifile);
+ hfs_error_path = srcname;
return -1;
}
@@ -497,6 +517,7 @@
ERROR(EINVAL, "unknown, unsupported, or corrupt MacBinary file");
close(ifile);
+ hfs_error_path = srcname;
return -1;
}
@@ -505,6 +526,7 @@
ERROR(EINVAL, "unsupported MacBinary file version");
close(ifile);
+ hfs_error_path = srcname;
return -1;
}
@@ -514,6 +536,7 @@
ERROR(EINVAL, "invalid MacBinary file header (bad file name)");
close(ifile);
+ hfs_error_path = srcname;
return -1;
}
@@ -525,6 +548,7 @@
ERROR(EINVAL, "invalid MacBinary file header (bad file length)");
close(ifile);
+ hfs_error_path = srcname;
return -1;
}
@@ -538,10 +562,11 @@
if (ofile == 0)
{
close(ifile);
+ hfs_error_path = dstname;
return -1;
}
- result = do_macb(ifile, ofile, dsize, rsize);
+ result = do_macb(srcname, dstname, ifile, ofile, dsize, rsize);
if (result == 0 && hfs_fstat(ofile, &ent) == -1)
{
@@ -561,7 +586,7 @@
result = -1;
}
- closefiles(ifile, ofile, &result);
+ closefiles(srcname, dstname, ifile, ofile, &result);
return result;
}
@@ -657,13 +682,17 @@
ifile = opensrc(srcname, &dsthint, ".hqx", 0);
if (ifile == -1)
- return -1;
+ {
+ hfs_error_path = srcname;
+ return -1;
+ }
if (bh_open(ifile) == -1)
{
ERROR(errno, bh_error);
close(ifile);
+ hfs_error_path = srcname;
return -1;
}
@@ -671,6 +700,7 @@
{
bh_close();
close(ifile);
+ hfs_error_path = srcname;
return -1;
}
@@ -681,20 +711,26 @@
{
bh_close();
close(ifile);
+ hfs_error_path = dstname;
return -1;
}
result = do_binh(ofile, dsize, rsize);
+ if (result == -1)
+ hfs_error_path = dstname;
+
if (bh_close() == -1 && result == 0)
{
ERROR(errno, bh_error);
+ hfs_error_path = srcname;
result = -1;
}
if (result == 0 && hfs_fstat(ofile, &ent) == -1)
{
ERROR(errno, hfs_error);
+ hfs_error_path = dstname;
result = -1;
}
@@ -704,10 +740,11 @@
if (result == 0 && hfs_fsetattr(ofile, &ent) == -1)
{
ERROR(errno, hfs_error);
+ hfs_error_path = dstname;
result = -1;
}
- closefiles(ifile, ofile, &result);
+ closefiles(srcname, dstname, ifile, ofile, &result);
return result;
}
@@ -724,18 +761,22 @@
ifile = opensrc(srcname, &dsthint, ".txt", 0);
if (ifile == -1)
- return -1;
+ {
+ hfs_error_path = srcname;
+ return -1;
+ }
ofile = opendst(vol, dstname, dsthint, TEXT_TYPE, TEXT_CREA);
if (ofile == 0)
{
close(ifile);
+ hfs_error_path = dstname;
return -1;
}
- result = do_text(ifile, ofile);
+ result = do_text(srcname, dstname, ifile, ofile);
- closefiles(ifile, ofile, &result);
+ closefiles(srcname, dstname, ifile, ofile, &result);
return result;
}
@@ -752,18 +793,22 @@
ifile = opensrc(srcname, &dsthint, 0, 1);
if (ifile == -1)
- return -1;
+ {
+ hfs_error_path = srcname;
+ return -1;
+ }
ofile = opendst(vol, dstname, dsthint, RAW_TYPE, RAW_CREA);
if (ofile == 0)
{
close(ifile);
+ hfs_error_path = dstname;
return -1;
}
- result = do_raw(ifile, ofile);
+ result = do_raw(srcname, dstname, ifile, ofile);
- closefiles(ifile, ofile, &result);
+ closefiles(srcname, dstname, ifile, ofile, &result);
return result;
}
--- copyout.c
+++ copyout.c 2000/11/03 08:57:59
@@ -537,12 +537,16 @@
*ifile = opensrc(vol, srcname, &dsthint, ext);
if (*ifile == 0)
- return -1;
+ {
+ hfs_error_path = srcname;
+ return -1;
+ }
*ofile = opendst(dstname, dsthint);
if (*ofile == -1)
{
hfs_close(*ifile);
+ hfs_error_path = dstname;
return -1;
}
@@ -554,17 +558,19 @@
* DESCRIPTION: close source and destination files
*/
static
-void closefiles(hfsfile *ifile, int ofile, int *result)
+void closefiles(const char *srcname, const char *dstname, hfsfile *ifile, int ofile, int *result)
{
if (close(ofile) == -1 && *result == 0)
{
ERROR(errno, "error closing destination file");
+ hfs_error_path = dstname;
*result = -1;
}
if (hfs_close(ifile) == -1 && *result == 0)
{
ERROR(errno, hfs_error);
+ hfs_error_path = srcname;
*result = -1;
}
}
@@ -585,7 +591,7 @@
result = do_macb(ifile, ofile);
- closefiles(ifile, ofile, &result);
+ closefiles(srcname, dstname, ifile, ofile, &result);
return result;
}
@@ -604,7 +610,7 @@
result = do_binh(ifile, ofile);
- closefiles(ifile, ofile, &result);
+ closefiles(srcname, dstname, ifile, ofile, &result);
return result;
}
@@ -627,7 +633,7 @@
result = do_text(ifile, ofile);
- closefiles(ifile, ofile, &result);
+ closefiles(srcname, dstname, ifile, ofile, &result);
return result;
}
@@ -646,7 +652,7 @@
result = do_raw(ifile, ofile);
- closefiles(ifile, ofile, &result);
+ closefiles(srcname, dstname, ifile, ofile, &result);
return result;
}
--- hcopy.c
+++ hcopy.c 2000/11/03 08:57:59
@@ -93,7 +93,8 @@
if (argc > 1 && (hfs_stat(vol, dest, &ent) == -1 ||
! (ent.flags & HFS_ISDIR)))
{
- ERROR(ENOTDIR, 0);
+ if (errno == 0 )
+ ERROR(ENOTDIR, 0);
hfsutil_perrorp(dest);
return 1;
@@ -123,7 +124,8 @@
if (stat(argv[i], &sbuf) != -1 &&
S_ISDIR(sbuf.st_mode))
{
- ERROR(EISDIR, 0);
+ if (errno == 0 )
+ ERROR(EISDIR, 0);
hfsutil_perrorp(argv[i]);
result = 1;
@@ -135,8 +137,9 @@
if (copyfile(argv[i], vol, dest) == -1)
{
- ERROR(errno, cpi_error);
- hfsutil_perrorp(argv[i]);
+ if (errno == 0 )
+ ERROR(errno, cpi_error);
+ hfsutil_perrorp(hfs_error_path);
result = 1;
}
@@ -182,7 +185,8 @@
if (argc > 1 && (stat(dest, &sbuf) == -1 ||
! S_ISDIR(sbuf.st_mode)))
{
- ERROR(ENOTDIR, 0);
+ if (errno == 0 )
+ ERROR(ENOTDIR, 0);
hfsutil_perrorp(dest);
return 1;
@@ -212,7 +216,8 @@
if (hfs_stat(vol, argv[i], &ent) != -1 &&
(ent.flags & HFS_ISDIR))
{
- ERROR(EISDIR, 0);
+ if (errno == 0 )
+ ERROR(EISDIR, 0);
hfsutil_perrorp(argv[i]);
result = 1;
@@ -225,7 +230,7 @@
if (copyfile(vol, argv[i], dest) == -1)
{
ERROR(errno, cpo_error);
- hfsutil_perrorp(argv[i]);
+ hfsutil_perrorp(hfs_error_path);
result = 1;
}
--- libhfs/Makefile.in
+++ libhfs/Makefile.in 2000/11/03 09:01:53
@@ -72,8 +72,8 @@
@echo "No self-tests available."
install ::
- $(LIBINSTALL) libhfs.a "$(LIBDEST)/."
- $(LIBINSTALL) hfs.h "$(INCDEST)/."
+ $(LIBINSTALL) libhfs.a $(DESTDIR)"$(LIBDEST)/."
+ $(LIBINSTALL) hfs.h $(DESTDIR)"$(INCDEST)/."
again :: clean all
--- libhfs/hfs.h
+++ libhfs/hfs.h 2000/11/03 08:57:59
@@ -115,6 +115,7 @@
# define HFS_FNDR_ISALIAS (1 << 15)
extern const char *hfs_error;
+char *hfs_error_path;
extern const unsigned char hfs_charorder[];
# define HFS_MODE_RDONLY 0
--- librsrc/Makefile.in
+++ librsrc/Makefile.in 2000/11/03 09:02:19
@@ -68,8 +68,8 @@
@echo "No self-tests available."
install ::
- $(LIBINSTALL) librsrc.a "$(LIBDEST)/."
- $(LIBINSTALL) rsrc.h "$(INCDEST)/."
+ $(LIBINSTALL) librsrc.a $(DESTDIR)"$(LIBDEST)/."
+ $(LIBINSTALL) rsrc.h $(DESTDIR)"$(INCDEST)/."
again :: clean all
--- strerror.c
+++ strerror.c 2000/11/03 08:57:59
@@ -64,6 +64,10 @@
case EROFS: return "Read-only file system";
case ENAMETOOLONG: return "File name too long";
case ENOTEMPTY: return "Directory not empty";
+ case EBADF: return "Bad file number";
+ case ELOOP: return "Too many symbolic links encountered";
+ case EFAULT: return "Bad address";
+ case EACCES: return "Permission denied";
}
# endif