                   E N D E A V O U R   M A R K   I I

                        V E R S I O N   2.1.20

                             HACKING GUIDE


        For contributors, builders, or those interested in the finer
        details behind the scenes; this document details the source
        files with their related purpose in this program along with
        outlines of non-intuitive areas of the code.

        Note: Version represented in this document may be out of date,
        verify version above with actual version of accompanying source.

--------
CONTENTS

        * Submitting Changes
        * Source Layout

------------------
SUBMITTING CHANGES

        Changes !!ARE NEVER ACCEPTED!! *before* initial contact with
        authors, please contact authors *first* before submitting
        changes.

        The addresses for contact are listed here:

                http://wolfpack.twu.net/contacts.html

-------------
SOURCE LAYOUT

        Note, $TOPLEVEL represents this source's toplevel directory.
        Most (not all) .c and .cpp files will have an accompanying .h
        file with the same name.


        In $TOPLEVEL/include:

        These file are global include files for most of the general
        globally shared functions.


        In $TOPLEVEL/endeavour2:

        This is the source directory for the primary program.

        Makefile.*      Makefiles for compiling and installing under
                        UNIXes.

        Makefile.srclist        List of header files and sources for
                                other Makefiles.

	aboutdialog.c		About dialog creation, modification, and
				deletion.

	archiveopts.c		Archive adding and extracting options.

	archiver.c		Archiver creation, modification, and
				deletion.
	archivercb.c		Archiver general callbacks.
	archivercontents.c	Archiver contents GtkCList management.
	archiverdnd.c		Archiver drag & drop callbacks and
				procedures.
	archiveropcb.c		Archiver operation callbacks and
				procedures.

	browser.c		File browser creation, modification, and
				deletion.
	browsercb.c		File browser general callbacks.
	browsercontents.c	File browser contents GtkCList management.
	browserdirtree.c	File browser directory GtkCTree management.
	browserdnd.c		File browser drag & drop callbacks and
				procedures.
	browseropcb.c		File browser operation callbacks and
				procedures.

	cdialog.c		Confirmation dialog functions.

	compiletimeinfo.h	Generated by the Makefile, contains
				information about the compiler and
				related values of interest.

	config.h		Compile time master configuration for this
				program. Contains definations for program
				name, version, language, copyright, and
				help messages.

	csd.c			Color selection dialog functions.

	deskicon.c		Desktop icon functions.

	devicesedit.c		Devices edit window creation, modification,
				deletion, and callbacks.
	deviceswin.c		Devices list window creation, modification,
				deletion, and callbacks.

	disk.cpp		Path utility functions (ie directory listing).

	editclist.c		Editable GtkCList creation, management, and
				deletion.

	edvarch.c		Endeavour archive object reference structures
                                management.
	edvarchfio.c		Endeavour archive object statistics fetching
				from disk.
	edvarchop.c		Endeavour archive object adding and
				extracting procedures.
	edvcb.c			Endeavour core callbacks and signal emitters.
	edvcfg.c		Endeavour configuration items list management,
				see edvcfglist.h for actual defination of
				the main configuration list.
	edvcfgfio.c		Endeavour configuration items list loading
				and saving to file.
	edvconfirm.c		Endeavour confirmation dialog mapping and
				querying, uses the confirmation dialog
				(cdialog.c).
	edvcursor.c		Endeavour GdkCursors management.
	edvcustomize.c		Creates the Customize window, see optwin.c
				for the base window creation, modification,
				and deletion.
	edvdate.c		Endeavour date formatting.
	edvdde.c		Endeavour low-level Dynamic Data Exchange
				parsing, used for Cut/Copy/Paste and Drag &
				Drop operations.
	edvdevices.c		Endeavour devices list management.
	edvdevicesfio.c		Endeavour devices list loading and saving to
				file.
	edvfcreate.c		Endeavour disk object creation procedures.
	edvfind.c		Endeavour find objects procedures.
	edvfop.c		Endeavour disk object linking, moving, and
				copying procedures.
	edvhistory.c		Endeavour operations history list management.
	edvid.c			User and group ID list management and
				formatting.
	edvinterps.c		Endeavour interprocess lock link io and
				command io (handing of interprocess command
				is in the main management timeout
				callback in edvcb.c).
	edvmimetypes.c		Endeavour MIME Types management.
	edvmimetypesfio.c	Endeavour MIME Types list loading and saving
				to file.
	edvmount.c		Endeavour mount and unmount procedures.
	edvobj.c		Endeavour disk object reference structures
				management.
	edvop.c			Endeavour core operation procedures.
	edvopen.c		Endeavour disk object opening, matches an
				object with appropriate MIME Type and runs
				the appropriate application.
	edvoptions.c		Creates the Options window, see opwin.c for
				the base window creation, modification, and
				deletion.
	edvrecbin.c		Endeavour recycled objects reference structures
				management.
	edvrecbinfio.c		Endeavour recycled objects low-level file
				IO.
	edvrecbinfop.c		Endeavour recycled objects file operation
				procedures (one level above edvrecbinfio.c).
	edvstatusbar.c		Endeavour status bar creation, management, and
				deletion.
	edvtypes.h		Endeavour fundimental data types.
	edvutils.c		Endeavour utility functions (that do not
				require GTK+).
	edvutilsgtk.c		Endeavour GTK+ utility functions.
	endeavour.h		Endeavour core header file.
	fb.c			(Simple) file browser functions.
	findbar.c		Find bar creation, management, and deletion.
	findwin.c		Find objects window creation, management, and
				deletion.
	findwincb.c		Find objects window general callbacks.
	fio.cpp			Low-level file IO.
	fopdialog.c		File operations dialog, for linking, moving,
				copying, chmod, and chowning disk objects.
	fprompt.c		Floating prompt functions, floating prompt is
				often used as an interfacing widget to the user
				for prompting a new name of a disk object.
	fsd.c			Font selection dialog functions.
	guiutils.c		GTK/GDK utility functions.
	imbr.c			Image browser creation, management, and
				deletion.
	imbrcb.c		Image browser general callbacks.
	imbrdnd.c		Image browser drag & drop callbacks and
				procedures.
	imbrimgview.c		Image browser image viewer management.
	imbropcb.c		Image browser operations callbacks and
				procedures.
	imbrtlist.c		Image browser thumbs list management.
	imgview.c		Image viewer functions.
	imgviewcrop.c		Image viewer cropping functions.
	main.c			Endeavour core creation, management, and
				deletion. See edvcb.c for the main timeout
				callback.
	mimetypesedit.c		MIME Types edit window creation, management,
				deletion, and callbacks.
	mimetypeswin.c		MIME Types list window creation, management,
				deletion, and callbacks.
	mountbar.c		Endeavour mount bar creation, management,
				deletion, and callbacks.
	optwin.c		Options window creation, management, and
				deletion.
	optwinop.c		Options window configuration fetch and
				apply functions.
	pdialog.c		Prompt dialog functions.
	piechart.c		Pie chart functions.
	prochandle.cpp		Low-level process running.
	progressdialog.c	Progress dialog functions.
	propwin.c		Properties window creation, management,
				deletion, and callbacks.
	pulist.c		Popup list functions.
	recbin.c		Recycle bin creation, management, and deletion.
	recbincb.c		Recycle bin general callbacks.
	recbincontents.c	Recycle bin contents list management.
	recbindiskicon.c	Recycle bin desktop icon creation, management,
				deletion, and callbacks. Note that this is
				independent from the rest of the recycle bin
				functions.
	recbindnd.c		Recycle bin drag & drop callbacks and
				procedures.
	recbinopcb.c		Recycle bin operation callbacks and procedures.
	rundlg.c		Run dialog creation, management, delection,
				and callbacks.
	stacklist.c		Stack list functions, this is a pair of
				GtkCLists used for configuration of tool bars
				and list headings.
	strexp.cpp		String `exploding'.
	string.cpp		Low-level string manipulation functions.
	tga.cpp			Targa image format loading and saving to
				file.
	tgadither.cpp		Targa image dithering functions supplimentary
				to tga.cpp.
	tlist.c			Thumbs list functions, used in the image browser.
	toolbar.c		Tool bar functions.


        In $TOPLEVEL/endeavour2/format.front:

        This is the source directory for the format.front program.

        Makefile.*      Makefiles for compiling and installing under
                        UNIXes.

        Makefile.srclist        List of header files and sources for
                                other Makefiles.

        compiletimeinfo.h       Generated by the Makefile, contains
                                information about the compiler and
                                related values of interest.

        config.h                Compile time configuration for this
                                program. Contains definations for program
                                name, version, language, copyright, and
                                help messages. Some are inherited from
                                ../config.h.

	formatcb.c		Format Manager window callbacks.

	formatmanager.c		Format Manager window creation and
				deletion.

	main.c			Window creation, management timeout,


        In $TOPLEVEL/endeavour2/fsck.front:

        This is the source directory for the fsck.front program.

        Makefile.*      Makefiles for compiling and installing under
                        UNIXes.

        Makefile.srclist        List of header files and sources for
                                other Makefiles.

        compiletimeinfo.h       Generated by the Makefile, contains
                                information about the compiler and
                                related values of interest.

	config.h		Compile time configuration for this
				program. Contains definations for program
				name, version, language, copyright, and
				help messages. Some are inherited from
				../config.h.

	fsckcb.c		FSCK Manager window callbacks.

	fsckmanager.c		FSCK Manager window creation and
				deletion.

        main.c                  Window creation, management timeout,
				and window destruction.


        In $TOPLEVEL/endeavour2/hedit:

	This is the source directory for the hedit program, a hex
	editor.

        Makefile.*      Makefiles for compiling and installing under
                        UNIXes.

        Makefile.srclist        List of header files and sources for
                                other Makefiles.

        compiletimeinfo.h       Generated by the Makefile, contains
                                information about the compiler and
                                related values of interest.

        config.h                Compile time configuration for this
                                program. Contains definations for program
                                name, version, language, copyright, and
                                help messages. Some are inherited from
                                ../config.h.

	hview.c			Hex view widget creation, management,
				and deletion.

	hviewcb.c		Hex view widget callbacks.

	main.c			Window creation, management timeout,
                                and window destruction.


        In $TOPLEVEL/endeavour2/lib:

	This is the source directory for the Endeavour2 api library.

        Makefile.*      Makefiles for compiling and installing under
                        UNIXes.

        Makefile.srclist        List of header files and sources for
                                other Makefiles.

        compiletimeinfo.h       Generated by the Makefile, contains
                                information about the compiler and
                                related values of interest.

        config.h                Compile time configuration for this
                                program. Contains definations for program
                                name, version, language, copyright, and
                                help messages. Some are inherited from
                                ../config.h.

	edvcfglist.h		Same as ../edvcfglist.h

	edvcontext.c		Endeavour2 api context.

	edvget.c		Configuration value fetching.

	edvnotify.c		Notifiers for notifying a running
				Endeavour process about external events,
				such as disk object add, modify, and
				removal.

	edvopen.c		Instructs a running Endeavour process to
				open an object.

	edvrecycle.c		Object recycling.

	edvutils.c		Utility functions, most extracted from
				../edvutils.c

	edvwindow.c		Instructs a running Endeavour process to
				create a new window such as a file
				browser or image browser.

	endeavour2-config.c	Endeavour2 api configuration reporter.


        In $TOPLEVEL/endeavour2/lib/demos:

	This is the source directory for demos that use the Endeavour2
	api library.


        In $TOPLEVEL/endeavour2/ziptool.front:

        This is the source directory for the ziptool.front program.

        Makefile.*      Makefiles for compiling and installing under
                        UNIXes.

        Makefile.srclist        List of header files and sources for
                                other Makefiles.

        compiletimeinfo.h       Generated by the Makefile, contains
                                information about the compiler and
                                related values of interest.

        config.h                Compile time configuration for this
                                program. Contains definations for program
                                name, version, language, copyright, and
                                help messages. Some are inherited from
                                ../config.h.

        main.c                  Window creation, management timeout,
                                and window destruction.

	ziptools.c		Zip Tools window creation and deletion.

	ziptoolscb.c		Zip Tools window callbacks.

	ziptoolsio.c		IO functions for the ziptool program.



                                                         -----------------
                                                         ENDEAVOUR MARK II
