{"id":16164636,"url":"https://github.com/johnsonjh/nulib","last_synced_at":"2025-03-18T23:30:30.530Z","repository":{"id":42125813,"uuid":"354478716","full_name":"johnsonjh/nulib","owner":"johnsonjh","description":"nulib: NuLib NuFile eXchange (NuFX) Archive Utility (for ShrinkIt/BinaryII/NuFX)","archived":false,"fork":false,"pushed_at":"2025-01-04T21:48:49.000Z","size":189,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-28T12:46:53.442Z","etag":null,"topics":["apple-ii","apple2","appleii","archiver","archiver-application","binary-ii","binaryii","nufx","nulib","shrinkit"],"latest_commit_sha":null,"homepage":"https://github.com/johnsonjh/nulib","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/johnsonjh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-04T07:04:48.000Z","updated_at":"2025-01-04T21:48:53.000Z","dependencies_parsed_at":"2024-10-27T19:18:01.032Z","dependency_job_id":"06a81334-9885-46f4-9e3a-9dff5011591b","html_url":"https://github.com/johnsonjh/nulib","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnsonjh%2Fnulib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnsonjh%2Fnulib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnsonjh%2Fnulib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnsonjh%2Fnulib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/johnsonjh","download_url":"https://codeload.github.com/johnsonjh/nulib/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243955420,"owners_count":20374369,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apple-ii","apple2","appleii","archiver","archiver-application","binary-ii","binaryii","nufx","nulib","shrinkit"],"created_at":"2024-10-10T02:47:19.213Z","updated_at":"2025-03-18T23:30:30.525Z","avatar_url":"https://github.com/johnsonjh.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NuLib\n\n**_NuLib_**: A NuFile eXchange (**NuFX**) Archive Utility\n(_also supporting_ **_ShrinkIt_**/**_BinaryII_**)\n\n## Overview\n\n### NuLib2\n\nThe original author of **NuLib** has continued development of **NuLib**\nas [**NuLib2**](https://github.com/fadden/nulib2).\n\n- **NuLib2** (_at least out of the box_), doesn't attempt to support\n  building on **MS-DOS**, **GS/OS**, or _most_ other 16-bit platforms\n  that were contemporary with the _Apple IIe_.\n\n- This version of **NuLib** is known to be working on **CP/M-68000**,\n  **Xenix**[**23**]**86**, modern (*and ancient*) resource constrained\n  embedded systems, *as well as* modern Linux running on 64-bit processors.\n\n  - While it _may_ be possible to build **NuLib2** for these older systems,\n    these changes would, with high probability, not be able to be regularly or\n    easily tested and maintained in future **NuLib2** releases.\n\n#### NuLib v3.25\n\n- To further complicate matters, there was an upstream **NuLib** **_v3.25_**,\n  which fixed many of the same bugs as this release, which I was not aware of\n  at the time of producing this fork.\n\n- Most of the work on that version was done by contributor _Devin Reade_,\n  with a focus on improving compatibility with older systems and compilers,\n  namely, **Orca/C** and **GNO** running on the _Apple IIgs_.\n\n  - It is believed that upstream **v3.25** should work least as well as v3.24\n    on these systems, however, it's been a very long time since they have been\n    tested and supported by the upstream author.\n\n- I _do_ plan to incorporate any applicable changes from that release, **as**\n  **long** as the changes **do** **not** negatively impact support for **CP/M-68K**\n  or **Xenix**.\n\n## Audience\n\n- In short, **NuLib2** should be preferred by most users.\n\n- If you need to have **NuLib** working on the _Apple IIGS_, the upstream\n  v3.25 is likely the best option and _probably_ works as well as v3.24.\n- If you need **NuLib** on a modern (but resource constrained) 64-bit or\n  32-bit embedded system, **CP/M-68000**, **Xenix/286**, or **Xenix/386**,\n  this version is known to have worked somewhat recently, and intends to\n  keep supporting these legacy platforms.\n\n## History\n\n### NuLib v3.24 (January 1993)\n\n- Improved MS-DOS filename fixing (now enforce \"8 chars '.' 3 chars\")\n- Fixed bug in LZW decompressor\n\n### NuLib v3.23 (December 1992)\n\n- Minor bug fixes for the MS-DOS version (Dale G. Shields)\n\n### NuLib v3.22 (September 1992)\n\n- Added \"compress file as if it were a disk\" code (provided by somebody whose\n  name I just lost). Seems to work, but it's not 100% tested.\n- Faster compression\n- Updated filetype abbreviations\n\n### NuLib v3.21\n\n- Minor fixes\n\n### NuLib v3.2 (April 1992):\n\n- Lots of minor bug fixes. (I was getting lost in the version numbers so I just\n  upped it to 3.2). Of importance are the bug fixes to the LZW-II decoder and\n  EFT (Expanded Fundamental Types) awareness.\n\n### NuLib v3.14 (November 1991)\n\n- Finished fixing NeXT probs. Really. (Chris Osborn w/push from Bruce Kahn)\n- Fixed some minor bugs (Larry W. Virden)\n\n### NuLib v3.13\n\n- Repaired XENIX directory stuff in \"nuadd.c\" (Morgan Davis)\n\n### NuLib v3.12\n\n- Fixed problem with table clears on non-LZW blocks (Frank Petroski)\n\n### NuLib v3.11\n\n- Added some stuff to make the NeXT happy (Chris Osborn)\n\n### NuLib v3.1 (October 1991)\n\n- GS/ShrinkIt LZW-II uncompression (finally!)\n- All ShrinkIt compression/uncompression routines are about 15% faster\n- Better compatibility with System V, especially the AT\u0026T 3B2\n\n### Nulib v3.03 (February 1991)\n\n- Fixed XENIX problems with includes and libs (Ron Higgins).\n- Fixed bug in directory expansion (Larry W. Virden).\n\n### NuLib v3.02\n\n- Silenced screaming about bad dates (Larry W. Virden).\n- Fixed glitches in nulib.lnk and nulib.mak (Bruce Kahn).\n\n### NuLib v3.01\n\n- Fixed non-compression bug in ShrinkIt LZW (Scott Blackman).\n\n### NuLib v3.0 (September 1990)\n\n- ShrinkIt LZW compression\n- UNIX 12-bit and 16-bit compression\n- New archive listing format (similar to ARC and ZOO)\n\n### Notes\n\n```text\nThings work much better if you read the documentation file (now available\non the archive site... sorry I didn't put it up sooner).  If you want to\nuse UNIX compress to store files, READ THE DOCUMENTATION FIRST.  Not only\ndoes it tell you how to do it, but it has some warnings about compatibility.\n\nTo compile this on a UNIX-type system, edit the file \"nudefs.h\".  Several\nsystems are predefined; the default is a BSD UNIX system.  If you want to run\nthis on something other than BSD, comment out the #define statements (using\n\"/*\" and \"*/\"), and uncomment the appropriate statements (several systems are\ndefined... if yours is an AT\u0026T System V system, try the defines for Amdahl\nUTS).  Then, type \"make\" to execute the Makefile.  If all goes well, you will\nbe left with an executable file called \"nulib\".  If all does not go well,\ndouble check \"nudefs.h\".  You may need to deal with the HAS_EFT stuff,\nespecially if your compiler complains that \"mode_t\" or \"off_t\" are undefined.\nSend some mail to me if you can't get it to work at all.\n\nTo make the MS-DOS version, use the nulib.mak and nulib.lnk files with MS C\n(supplied by Bruce Kahn).  To make the APW C version (NOT Orca/C), put all\nthe files in one directory, and make a subdirectory called \"OBJ\".  Put the\n\"linked.scr\" and \"linker.scr\" files in OBJ, and then \"make.apw\".  This will\ncompile all the files.  When it finishes, change to OBJ and \"alink\nlinked.scr\" (standard linker) or \"alink linker.scr\" (ZapLink).  The makefile\nused to do this automatically, but with only 1.25MB of RAM you have to exit\nAPW to purge all the memory used by the compiler, and and then restart APW\nand run the linker.\n\nIn both cases, BE SURE to modify \"nudefs.h\" first.  If you don't, the\ncompilation will halt in \"numain.c\" on a line which reminds you to change\n\"nudefs.h\" (I tended to forget about this).  Also, under APW make sure all\nthe file types are set to SRC, and the auxtype to CC.  These are changed with\nthe commands \"filetype\" and \"change\", respectively.\n\nPlease send bug reports, ideas, or gripes to fadden@uts.amdahl.com, or to\none of the addresses mentioned in the documentation or under the \"-hw\"\noption.\n```\n\n### Known Bugs\n\n- Under some systems, using UNIX compress on a file which does not compress will\n  cause the archive's EOF to be larger than it should be. This slack space will\n  be used up if you add more files to the archive (with NuLib anyway; no\n  guarantees about ShrinkIt or GS/ShrinkIt, but there's no reason why they\n  shouldn't work).\n\n- Just to make things clear: if the file being compressed doesn't get any\n  smaller, the compression halts and the file is simply stored uncompressed.\n  Because of the way compress works, on some systems the space that would have\n  been occupied by more compressed data is left attached to the file. The\n  ShrinkIt compression does not suffer from this problem. If you add more stuff\n  to the file, NuLib will fill the slack space first, NOT just append to the end\n  of the file).\n\n### Porting Notes\n\n- Linux Port\n\n  - This was pretty easy. The only thing linux complained about was an\n    incompatibility in the rename() function so I commented it out of stdio.h\n    and defined NO_RENAME in nudefs.h and added a linux def there.\n    - Mike Neuliep \\\u003cwires@gnu.ai.mit.edu\\\u003e\n\n- Modern Linux Port\n  - Added somewhat recent \\_G_config.h, commented a few lines, and changed\n    Makefile to use -fcommon. More work is likely needed, but has successfully\n    extracted Binary \\]\\[ and NuLib archives.\n    - Jeffrey H. Johnson \\\u003ctrnsz@pobox.com\\\u003e\n\n### Original Author\n\n- \\\u003cfadden@uts.amdahl.com\\\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnsonjh%2Fnulib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjohnsonjh%2Fnulib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnsonjh%2Fnulib/lists"}