     ##################################################################
     #                                                                #
     #  FDNPKG16 - a 16-bit network-enabled package manager for DOS   #
     #  Copyright (C)2012-2021 Mateusz Viste                          #
     #  Copyright (C)2025-2026 Victoria Crenshaw & Katheryn Northwood #
     #                                                                #
     #              https://github.com/sparky4/fdnpkg16               #
     #              https://gitlab.com/sparky4/fdnpkg16               #
     #                                                                #
     ##################################################################


*** What is FDNPKG16? ***

FDNPKG16 is network-enabled package manager for FreeDOS, based on the FDNPKG
project by Mateusz Viste. FDNPKG16 fixes numerous bugs and adds support for
x86-16bit (8086/8088, 186, 286 class) systems. FDNPKG16 is released under
the MIT license. It allows to install/remove/update software on a compatible
DOS system using remote or local repositories. Remote (online) repositories
can be either http or gopher URLs. FDNPKG16 is primarily for the FreeDOS (tm)
Project, but it can be used on other DOS systems as well. FDNPKG16 comes with
a lightweight tool called FDINST16 that is suitable for low-memory systems
and does not provide network support, only supporting local packages.
FDNPKG16 stands for "FreeDOS Network Package manager 16-bit".


*** FDNPKG16 vs FDNPKG ***

As mentioned earlier, FDNPKG16 is based on the code of FDNPKG. However, keep
in mind that this program introduces a lot of changes to make the program
more simple and compatible with older computers, namely 16-bit x86 systems.
Several features have been added, and less commonly-used features such as
LZMA compression have been removed. FDNPKG originally required an 80386 class
processor so it only worked on 32-bit x86 computers. Also mentioned earlier,
FDNPKG16 fixes numerous bugs that were in FDNPKG which has since been left
abandoned in 2021. FDNPKG16 supports more than one package installation at
the same time. As in you can install more than a single package in one
command.
  ex. fdnpkg16 in pkg1 pkg2 pkg3


*** Configuration ***

The FDNPKG16 configuration file is a text file that contains various directives,
like repositories declarations, cache time, etc. I won't describe the
configuration file here, because it's pretty well commented itself. FDNPKG16
looks for its configuration file into %DOSDIR%\BIN\FDNPKG16.CFG by default, but
you can make FDNPKG16 use a configuration file at any other location by setting
the FDNPKG16.CFG environnement variable.
Example:
  SET FDNPKG16.CFG=C:\MYDIR\FDNPKG16.CFG


*** Requirements ***

To use FDNPKG16, your system will need to fullfill following conditions:
  - IBM PC Compatible, 8086/8088 or better
  - 480 KiB of free memory (640K or higher recommended)
  - at least as much free disk space in your %TEMP% directory as the size of
    the biggest package you wish to be able to install,
 and, if you'd like to use online repositories:
  - a loaded packet driver (NE2000, Crynwr, or compatible)
  - a working WatTCP environnement (that is, a proper wattcp.cfg file)


*** Usage ***

Syntax: FDNPKG16 action [parameters]

Where action is one of the following:
 search [str]      - search net repositories for package containing 'str'
 vsearch [str]     - same as 'search', but prints also source repositories
 install pkg       - install the package 'pkg' (or local zip file)
 install-nosrc pkg - install the package 'pkg' (or local zip file) w/o sources
 install-wsrc pkg  - install the package 'pkg' (or local zip file) with sources
 reinstall pkg     - reinstall the package 'pkg' (or local zip file)
 remove pkg        - remove the package 'pkg'
 listlocal [str]   - list all local (installed) packages containing 'str'
 listfiles pkg     - list files owned by the package 'pkg'
 checkupdates      - check for available updates of packages and display them
 update [pkg]      - update 'pkg' to last version (or all packages if no arg)
 holdlist [str]    - list held all packages or packages containing 'str'
 hold pkg          - hold 'pkg' at current version
 unhold pkg        - unhold 'pkg' for updates
 notinstalled      - show avalible packages from repositories
 vnotinstalled     - same as 'notinstalled', but prints also source repositories
 dumpcfg           - print out the configuration loaded from the cfg file
 clearcache        - clear FDNPKG16's local cache
 license           - print out the license of this program

*** Short-hand commands ***

FDNPKG16 adds short-hand commands much like you'd see in NetBSD's pkgin.

Syntax: FDNPKG16 action [parameters]

Where action is one of the following:
 se [str]          - search net repositories for package containing 'str'
 vs [str]          - same as 'search', but prints also source repositories
 in pkg            - install the package 'pkg' (or local zip file)
 in-nosrc pkg      - install the package 'pkg' (or local zip file) w/o sources
 in-wsrc pkg       - install the package 'pkg' (or local zip file) with sources
 ri pkg            - reinstall the package 'pkg' (or local zip file)
 rm pkg            - remove the package 'pkg'
 ll [str]          - list all local (installed) packages containing 'str'
 lf pkg            - list files owned by the package 'pkg'
 cu                - check for available updates of packages and display them
 up [pkg]          - update 'pkg' to last version (or all packages if no arg)
 hl [str]          - list held all packages or packages containing 'str'
 ho pkg            - hold 'pkg' at current version
 uh pkg            - unhold 'pkg' for updates
 ni                - show avalible packages from repositories
 vn                - same as 'notinstalled', but prints also source repositories
 dc                - print out the configuration loaded from the cfg file
 cc                - clear FDNPKG16's local cache
 li                - print out the license of this program

*** Some details about what a "package" is ***

FDNPKG16 is handling FreeDOS packages. A "package" is an archive containing
software in its binary and/or source code form. FreeDOS packages are in fact
standard ZIP files that contain a predefined directory tree (eg. BIN/,
SOURCE/, DOC/...). FDNPKG16 performs a set of tests on the package before
trying to install it, and refuses to install packages that seem to be invalid.
FDNPKG16 supports local or remote packages with ZIP compression.


*** Bulding from source ***

If you wish to build FDNPKG16 from sources, you will have to use Open Watcom
2.0 and have it in your PATH. It is recommended to use this version over 1.9
due to a floating point bug in 1.9 versions that breaks non-8087 compatibility,
however Watt32 needs to be compiled using 1.9. You should have a full install
of Open Watcom including wmake and upx. The whole build procedure is automated
via a makefile file, therefore building it requires only to type 'wmake', and
then the required magic should happen. The source for Watt32 and other needed
dependencies is already present in the FDNPKG16 source. Microsoft Windows and
Mac OS X/macOS is not supported, only Linux distributions, BSDs, and DOSes can
compile FDNPKG16. It may be possible to support Windows and Mac OS X/macOS
compiling in the future.


*** License (MIT) ***

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.
