The problem exists for both RTEMS untar implementations and their
variants: Untar_FromMemory(), Untar_FromFile() and rtems_tarfs_load().
If filesystem object already exists at extracted directory path
then if it is directory, creation is ignored. Attempt
to delete/unlink object and make directory is tried for other cases.
This simple approach problem reported in ticket fixes#2413.
Behavior follows GNU tar and BSD tar practice for directories
but much more work is required to achieve full semantics
of the full featured tar implementation still.
The Coverity issue was an ignored return value from a read()
in a loop which should have been a seek() since the data
read was ignored.
The file itself needed reformatting to conform to RTEMS style.
Script does what is expected and tries to do it as
smartly as possible.
+ remove occurrences of two blank comment lines
next to each other after Id string line removed.
+ remove entire comment blocks which only exited to
contain CVS Ids
+ If the processing left a blank line at the top of
a file, it was removed.
* include/rtems/tar.h, libcsupport/include/tar.h: Remove.
* configure.ac: Require toolchain to provide tar.h.
* libfs/src/imfs/imfs_load_tar.c, libmisc/untar/untar.h:
Use <tar.h> instead of <rtems/tar.h>.
* configure.ac: Add check for weak function attribute.
Remove AM_CONDITIONAL([RTEMS_LIBSHELL].
Add AM_CONDITIONAL(LIBSHELL), AM_CONDITIONAL(LIBSERDBG).
* capture/Makefile.am: Use *.a instead of *-tmp.a.
* cpuuse/Makefile.am: Use *.a instead of *-tmp.a.
* devnull/Makefile.am: Use *.a instead of *-tmp.a.
* dummy/Makefile.am: Use *.a instead of *-tmp.a.
* dumpbuf/Makefile.am: Use *.a instead of *-tmp.a.
* monitor/Makefile.am: Use *.a instead of *-tmp.a.
* mw-fb/Makefile.am: Use *.a instead of *-tmp.a.
* rtmonuse/Makefile.am: Use *.a instead of *-tmp.a.
* serdbg/Makefile.am: Use *.a instead of *-tmp.a.
Build iff LIBSERDBG is true.
* shell/Makefile.am: Use *.a instead of *-tmp.a.
Build iff LIBSHELL is true.
* stackchk/Makefile.am: Use *.a instead of *-tmp.a.
* untar/Makefile.am: Use *.a instead of *-tmp.a.
* wrapup/Makefile.am: Reflect changes above.
* capture/Makefile.am: Don't include @RTEMS_BSP@.cfg.
* cpuuse/Makefile.am: Don't include @RTEMS_BSP@.cfg.
* devnull/Makefile.am: Don't include @RTEMS_BSP@.cfg.
* dummy/Makefile.am: Don't include @RTEMS_BSP@.cfg.
* dumpbuf/Makefile.am: Don't include @RTEMS_BSP@.cfg.
* monitor/Makefile.am: Don't include @RTEMS_BSP@.cfg.
* mw-fb/Makefile.am: Don't include @RTEMS_BSP@.cfg.
* rtmonuse/Makefile.am: Don't include @RTEMS_BSP@.cfg.
* serdbg/Makefile.am: Don't include @RTEMS_BSP@.cfg.
* shell/Makefile.am: Don't include @RTEMS_BSP@.cfg.
* stackchk/Makefile.am: Don't include @RTEMS_BSP@.cfg.
* untar/Makefile.am: Don't include @RTEMS_BSP@.cfg.
* wrapup/Makefile.am: Don't include @RTEMS_BSP@.cfg.
* capture/Makefile.am: Use .$(OBJEXT) instead of .o.
* cpuuse/Makefile.am: Use .$(OBJEXT) instead of .o.
* devnull/Makefile.am: Use .$(OBJEXT) instead of .o.
* dummy/Makefile.am: Use .$(OBJEXT) instead of .o.
* dumpbuf/Makefile.am: Use .$(OBJEXT) instead of .o.
* monitor/Makefile.am: Use .$(OBJEXT) instead of .o.
* mw-fb/Makefile.am: Use .$(OBJEXT) instead of .o.
* rtmonuse/Makefile.am: Use .$(OBJEXT) instead of .o.
* serdbg/Makefile.am: Use .$(OBJEXT) instead of .o.
* shell/Makefile.am: Use .$(OBJEXT) instead of .o.
* stackchk/Makefile.am: Use .$(OBJEXT) instead of .o.
* untar/Makefile.am: Use .$(OBJEXT) instead of .o.
* untar/Makefile.am: Use 'PREINSTALL_FILES ='.
* monitor/Makefile.am: Use 'PREINSTALL_FILES ='.
* shell/Makefile.am: Use 'PREINSTALL_FILES ='.
* devnull/Makefile.am: Use 'PREINSTALL_FILES ='.
* dumpbuf/Makefile.am: Use 'PREINSTALL_FILES ='.
* mw-fb/Makefile.am: Use 'PREINSTALL_FILES ='.
* stackchk/Makefile.am: Use 'PREINSTALL_FILES ='.
* rtmonuse/Makefile.am: Use 'PREINSTALL_FILES ='.
* cpuuse/Makefile.am: Use 'PREINSTALL_FILES ='.
* rootfs/Makefile.am: Use 'PREINSTALL_FILES ='.
that contains:
* Removes remaining (now illegal) references to $(SRC) from a couple of
Makefile.ams
* Removes duplicate AC_CONFIG_SUBDIRS macro from c/configure.in
* Moves ENABLE_LIBCDIR into RTEMS_PROG_C[C|XX]_FOR_TARGET (hides LIBCDIR
from most configure scripts, i.e. LIBCDIR becomes less visible)
* Adds RTEMS_PROG_C[C|XX]_FOR_TARGET and RTEMS_CANONICALIZE_TOOLS to
libbsp/*/configure.ins (A minor bug in previous implementations, which
only has an impact when switching to GNU/Cygnus canonicalization)
* Cleans up several bogus comments.
* Removes MKLIB
* Switches the version number to 4.5.0 (for testing version number
handling)
.. a major configuration cleanup
... major enhancement of automake support.
... and it contains a *major* breakthough:
Automake support for libchip and libmisc *LEAF* directories.
To implement this I have used several nasty tricks
* The basical trick is to wrap an old Makefile.in's contents into a
Makefile.am and still continue to use (i.e include) the old
*.cfg files.
* Replaced each INSTALL_IF_CHANGE and INSTALL_VARIANT with make
dependencies
* Add a gnu-make ifdef AUTOMAKE to main.cfg to avoid conflicts between
automake and RTEMS make rules
* Replaced each install:: and preinstall:: rule with make dependencies
* Replaced SUB_DIRS with SUBDIRS in all Makefile.ins (Automake
convention)
* Removed each manually added autoconf substitution which automake
performs automatically.
This is not yet full automake support, because using the temporary
installation directory, preinstallation in general and building variants
are in contradiction to automake's basic working principles ...
... the new Makefile.ams work still somewhat clumsy
... nevertheless they work (quite well).
WARNING:
At first glance this patch is small, but
* it affects the whole configuration system.
* it opens the road to introducing automake to all Makefile.ins
currently not being under automake control.
JOEL> Does this remove or add any files?
Both, all Makefile.ins below libchip and libmisc get replaced with
Makefile.ams.