Penguin
Diff: HowToNLMHOWTO
EditPageHistoryDiffInfoLikePages

Differences between current version and revision by previous author of HowToNLMHOWTO.

Other diffs: Previous Major Revision, Previous Revision, or view the Annotated Edit History

Newer page: version 3 Last edited on Friday, October 29, 2004 10:10:43 am by StuartYeates
Older page: version 2 Last edited on Friday, June 7, 2002 1:07:10 am by perry Revert
@@ -1,1425 +1 @@
-  
-  
-  
-!NetWare Loadable Module Programming HOWTO  
-  
-  
-  
-----  
-  
-!!!!NetWare Loadable Module Programming HOWTO  
-  
-!!Martin Hinner, <  
-mhi@penguin.cz>Version .2, 04 August 2000  
-  
-  
-----  
-''This document describes how to develop !NetWare Loadable Modules under Linux,  
-using GNU CC and nlmconv(1) from GNU binutils. This is not an official Novell  
-document; I wrote it without any help or cooperation from  
-Novell, Inc.''  
-----  
-  
-  
-  
-  
-!!1. Introduction  
-  
-  
-*1.1 C++ Development  
-  
-*1.2 Related Documentation  
-  
-*1.3 Copying  
-  
-  
-  
-  
-  
-!!2. Setting Up Your Linux Box and !NetWare Server  
-  
-  
-*2.1 Novell !NetWare Server  
-  
-*2.2 Linux Box With IPX/NCPFS  
-  
-*2.3 GNU C Compiler  
-  
-*2.4 nlmconv(1) from GNU binutils  
-  
-*2.5 The nlm-kit Package  
-  
-*2.6 Include Files and Documentation from the NDK  
-  
-*2.7 Access to the !NetWare Server (Xconsole or rconsole)  
-  
-  
-  
-  
-  
-!!3. First Step: Hello world  
-  
-  
-*3.1 hello.c - Source File  
-  
-*3.2 hello.def - NLM header file  
-  
-*3.3 Makefile  
-  
-*3.4 GCC problems  
-  
-*3.5 Testing the Module  
-  
-  
-  
-  
-  
-!!4. NLM Header file  
-  
-  
-*4.1 AUTOUNLOAD  
-  
-*4.2 CHECK  
-  
-*4.3 CODESTART  
-  
-*4.4 COPYRIGHT  
-  
-*4.5 CUSTOM  
-  
-*4.6 DATASTART  
-  
-*4.7 DATE  
-  
-*4.8 DEBUG  
-  
-*4.9 DESCRIPTION  
-  
-*4.10 EXIT  
-  
-*4.11 EXPORT  
-  
-*4.12 FLAG_OFF  
-  
-*4.13 FLAG_ON  
-  
-*4.14 HELP  
-  
-*4.15 IMPORT  
-  
-*4.16 INPUT  
-  
-*4.17 MAP  
-  
-*4.18 MESSAGES  
-  
-*4.19 MODULE  
-  
-*4.20 MULTIPLE  
-  
-*4.21 NAMELEN  
-  
-*4.22 OS_DOMAIN  
-  
-*4.23 OUTPUT  
-  
-*4.24 PATH  
-  
-*4.25 PSEUDOPREEMPTION  
-  
-*4.26 REENTRANT  
-  
-*4.27 SCREENNAME  
-  
-*4.28 SHARELIB  
-  
-*4.29 STACK  
-  
-*4.30 STACKSIZE  
-  
-*4.31 STAMPEDDATA  
-  
-*4.32 START  
-  
-*4.33 SYNCHRONIZE  
-  
-*4.34 THREADNAME  
-  
-*4.35 TYPE  
-  
-*4.36 VERSION  
-  
-*4.37 XDCDATA  
-  
-  
-  
-  
-  
-!!5. Message files  
-  
-  
-  
-  
-!!6. Help Files  
-  
-  
-  
-  
-!!7. XDC Data Files  
-  
-  
-  
-  
-!!8. Header Files (.h)  
-  
-  
-  
-  
-!!9. Import Files (.imp)  
-  
-  
-*9.1 Generating Import Files Using nlmimp(1)  
-  
-----  
-  
-!!1. Introduction  
-  
-  
-!NetWare Loadable Modules (NLMs) are programs which run on Novell !NetWare  
-server. NLMs become part of the !NetWare OS. You can load and unload NLMs while  
-the server is running.  
-  
-  
-  
-  
-  
-"Official" compilers for NLMs are:  
-  
-  
-  
-  
-  
-* Watcom C/C++  
-*  
-  
-* Metrowerks Codewarrior for !NetWare (see  
-http://www.metrowerks.com/)  
-*  
-  
-* EPC C/C++ (see  
-http://www.epc.com)  
-*  
-  
-* Novell NLMLINK.EXE  
-*  
-  
-  
-  
-(On a side note, !NetWare 5 can also load 32bit DLLs, which can be built using Microsoft Visual  
-C++, Borland C++ and other Windows compilers. For more information see  
-http://developer.novell.com/ndk/dllcomp.htm)  
-  
-  
-  
-  
-  
-This document describes how to get started with NLM development under Linux (and  
-possibly other Unixes). Please note that this project is in very early  
-stages of development, so a lot of things may not work as you'd expect.  
-  
-  
-  
-  
-  
-This document assumes that you are familiar with Novell !NetWare, and that you  
-have at least basic knowledge of writing NLMs. For more information about  
-writing NLMs, see Novell's developer site,  
-http://developer.novell.com/. You should also have experience  
-with Unix and C/C++ programming with GNU CC. You can find a lot of information  
-about this topic at  
-http://www.linuxdoc.org/.  
-  
-  
-  
-  
-!!1.1 C++ Development  
-  
-  
-  
-As far as I know, C++ development with gcc is currently impossible,  
-till somebody ports at least the libstdc++ and libgcc  
-libraries from the gcc package.  
-  
-  
-  
-  
-!!1.2 Related Documentation  
-  
-  
-  
-  
-  
-  
-Other documents that might be useful are:  
-  
-  
-  
-  
-  
-*The __IPX-HOWTO__, which describes the details of configuring IPX  
-protocol on Linux.  
-*  
-  
-*The __Linux GCC HOWTO__, which covers how to set up the GNU C compiler and  
-development libraries under Linux, and gives an overview of compiling,  
-linking, running and debugging programs under it.  
-*  
-  
-*The __Assembly HOWTO__, which describes how to  
-program in assembly language using FREE programming tools, focusing on  
-development for or from the Linux Operating System on the i386 platforms.  
-*  
-  
-*The __Creating NLMs on Linux x86__,  
-http://home.sch.bme.hu/~keresztg/novell/howto/NLM-Linux-HOWTO.html, by Gabor Keresztvalvi  
-<keresztg@mail.com>. His page describes the same thing as my HOWTO.  
-I found Gabor's page ten days after releasing version .1 of this document :( .  
-*  
-  
-  
-  
-  
-  
-!!1.3 Copying  
-  
-  
-  
-Copyright (c) 2000 Martin Hinner, <  
-mhi@penguin.cz>.  
-  
-  
-  
-  
-  
-This HOWTO is Free documentation; you can redistribute it and/or  
-modify it under the terms of the GNU General Public License as  
-published by the Free Software Foundation; either version 2 of the  
-License, or (at your option) any later version.  
-  
-  
-This document is distributed in the hope that it will be useful,  
-but without any warranty; without even the implied warranty of  
-merchantability or fitness for a particular purpose. See the GNU  
-General Public License for more details.  
-  
-  
-You can obtain a copy of the GNU General Public License by writing  
-to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA  
-02139, USA.  
-  
-  
-  
-  
-  
-  
-----  
-  
-!!2. Setting Up Your Linux Box and !NetWare Server  
-  
-  
-You need to install and configure these things for NLM development:  
-  
-  
-  
-  
-  
-* Linux box with configured IPX and NCPFS  
-*  
-  
-* GNU C compiler (gcc) for elf-i386  
-(nearly all i386 Linux Distributions include it)  
-*  
-  
-* GNU binutils with nlmconv(1) program  
-*  
-  
-* My nlm-kit package  
-*  
-  
-* Novell Developer Kit - NDK (include files and documentation)  
-*  
-  
-* DOSemu (with rconsole) or X11 server for running !NetWare Xconsole.  
-*  
-  
-* ... and, finally, !NetWare server :-)  
-*  
-  
-  
-  
-You might also want to download the nlm-examples package from my FTP site:  
-ftp://ftp.penguin.cz/pub/users/mhi/nlm/ or  
-ftp://ftp.funet.fi/pub/mirrors/ftp.penguin.cz/pub/users/mhi/nlm/.  
-  
-  
-  
-  
-!!2.1 Novell !NetWare Server  
-  
-  
-  
-Let's start with the !NetWare server. You can use !NetWare versions 3.X, 4.X  
-or 5.X.  
-!NetWare 5 (or 5.1) three user "demo" version can be ordered from  
-Novell Inc. for a few dollars. Don't be confused with word "demo", it's fully  
-functional !NetWare, except that it is limited to three users. By the way, this license can  
-be upgraded online, at no cost, to five users. You might also try asking your  
-local Novell partner for demo CDs (they may be free).  
-  
-  
-  
-  
-!!2.2 Linux Box With IPX/NCPFS  
-  
-  
-  
-You need to recompile your kernel with "The IPX protocol" and  
-"NCP file system support" options enabled. Don't forget to say YES to  
-"NDS authentication support" if you are using the NDS. Then you must  
-configure the IPX protocol and mount your !NetWare server volumes.  
-Make sure that you  
-have installed the ncpfs package! I use this script:  
-  
-  
-  
-----  
-  
-#!/bin/sh  
-ipx_interface delall  
-ipx_interface add -p eth0 802.2 120 # Frame Ethernet_802.2, ipx net num 120  
-insmod ncpfs # I have NCPfs compiled as module  
-ncpmount -U admin -S elf -P XYZ /nw # mount all ELF's volumes as /nw  
-  
-----  
-  
-  
-For more information about configuring IPX and NCPFS, see the IPX-HOWTO.  
-  
-  
-  
-  
-!!2.3 GNU C Compiler  
-  
-  
-  
-I think that all modern Linuxes for the Intel x86 include gcc, which generates  
-ELF32/i386 object files. If you have an older Linux distribution, it may  
-use the a.out format instead of ELF. If your Linux doesn't use ELF, get and  
-install a newer gcc.  
-  
-  
-  
-  
-!!2.4 nlmconv(1) from GNU binutils  
-  
-  
-  
-The nlmconv(1) utility links object files to the NLM format. It is a standard  
-part of GNU binutils, but unfortunately it is not included in current distributions (!RedHat,  
-SuSE, Debian, ...). Get the binutils sources from ftp.gnu.org, and compile them, or  
-simply use the pre-compiled nlmconv from my nlm-kit package.  
-  
-  
-  
-  
-  
-  
-  
-!!2.5 The nlm-kit Package  
-  
-  
-  
-My nlm-kit package is avaliable from  
-ftp://ftp.penguin.cz/pub/users/mhi/nlm/. It contains necessary  
-files for NLM development. Extract it and run "make all" and  
-"make install".  
-It will create the directory /usr/nwsdk/ and install all import files,  
-object files and the nlmimp(1) utility.  
-  
-  
-  
-  
-!!2.6 Include Files and Documentation from the NDK  
-  
-  
-  
-  
-  
-  
-Getting the NDK is easy:  
-  
-  
-* Download it from  
-http://developer.novell.com/ndk/.  
-*  
-  
-* Order two NDK CDs from Novell.  
-*  
-  
-* Get these CDs at no cost at !BrainShare, Novell Developer Workshop  
-or at other Novell Developer events.  
-*  
-  
-  
-  
-  
-  
-  
-You need these files from the NDK (all are available online at  
-http://developer.novell.com/ndk/clib.htm:  
-  
-  
-* C language header and import files (cdrom:\files\download\clib.exe)  
-*  
-  
-* C language API documentation (cdrom:\files\download\clib_doc.exe)  
-*  
-  
-* C language samples (optional) (cdrom:\files\download\clib_sample.exe)  
-*  
-  
-  
-  
-It's a pity that all the files mentioned above are !InstallShield Win32 executables.  
-You must find some Windows machine to extract them and then copy the include files  
-to /usr/nwsdk/include/ and documentation/samples to anywhere you want.  
-The Novell License doesn't allow me to distribute include files or documentation  
-with the nlm-kit.  
-  
-  
-  
-  
-  
-Because the NDK include files don't work under Linux, you need to patch  
-them manually by typing "make install-include" in the nlm-kit-X.Y/  
-directory.  
-  
-  
-  
-  
-!!2.7 Access to the !NetWare Server (Xconsole or rconsole)  
-  
-  
-  
-You can access the !NetWare server console directly (keyboard and monitor),  
-using rconsole.exe (from dosemu), or using telnetd.nlm/Xconsole (you need  
-X server for this).  
-  
-  
-  
-----  
-  
-!!3. First Step: Hello world  
-  
-  
-As usual, we will start with the famous "Hello world" program. The source  
-code for hello.nlm is available in the nlm-samples package. You can download  
-it from  
-ftp://ftp.penguin.cz/pub/users/mhi/nlm/.  
-  
-  
-  
-  
-!!3.1 hello.c - Source File  
-  
-  
-  
-  
-----  
-  
-#define N_PLAT_NLM /* Define dest. platform */  
-#include <nwconio.h> /* !ConsolePrintf */  
-int  
-main (int argc, char **argv)  
-{  
-int i;  
-!ConsolePrintf ("\rHello world!\n\n"); /* print on system console */  
-!ConsolePrintf("Arguments:\n"); /* all arguments */  
-for (i=;i<argc;i++)  
-!ConsolePrintf("argv [[%u ]=\"%s\"\n",i, argv[[i]);  
-return ; /* exit NLM */  
-}  
-  
-----  
-  
-  
-  
-  
-!!3.2 hello.def - NLM header file  
-  
-  
-  
-  
-----  
-  
-#  
-# hello.def - NLM Header definition file for nlmconv(1)  
-# Copyright (c) 2000 Martin Hinner <mhi@penguin.cz>  
-#  
-# define startup object files  
-INPUT hello.o  
-INPUT /usr/nwsdk/lib/prelude.o # clib startup code  
-# all imported functions and import lists  
-IMPORT @/usr/nwsdk/imports/clib.imp # Functions in CLIB.NLM  
-IMPORT @/usr/nwsdk/imports/threads.imp # Functions in THREADS.NLM  
-# NLM header...  
-OUTPUT hello.nlm # output file  
-TYPE 0 # Ordinary NLM  
-VERSION 1,,0 # Version 1.  
-COPYRIGHT "Copyright (c) 2000 Martin Hinner <mhi@penguin.cz>" # (c) ...  
-DESCRIPTION "Simple 'Hello world' NLM module." # title of nlm  
-SCREENNAME "System Console" # Default screen name  
-MODULE CLIB,THREADS # req'd modules  
-  
-----  
-  
-  
-  
-  
-!!3.3 Makefile  
-  
-  
-  
-  
-----  
-  
-# makefile for "hello world" NLM  
-CC = gcc  
-CFLAGS = -Wall -O2 -g -I/usr/nwsdk/include/ -nostdinc -fno-builtin -fpack-struct  
-hello.nlm: hello.o hello.def  
-nlmconv --output-target=nlm32-i386 -T hello.def  
-hello.o: hello.c  
-$(CC) $(CFLAGS) -c hello.c  
-  
-----  
-  
-  
-  
-  
-!!3.4 GCC problems  
-  
-  
-  
-You must pass these arguments to the gcc:  
-  
-  
-  
-  
-  
-* __-fno-builtin__:  
-GCC's fast builtin functions sometimes cause server to abend,  
-so we don't want to use them.  
-*  
-  
-* __-nostdinc__:  
-Only include files in /usr/nwsdk/include are valid for NLMs (don't  
-forget to use also -I/usr/nwsdk/include).  
-*  
-  
-* __-fpack-struct__:  
-GCC's struct packing method is not valid for Novell !NetWare, so we  
-won't use it. Thanks to Gabor Keresztvalvi for this information.  
-*  
-  
-  
-  
-  
-  
-!!3.5 Testing the Module  
-  
-  
-  
-Copy hello.nlm to the SYS:\SYSTEM directory on your !NetWare server. Then, on  
-the system console, type "load hello.nlm". If everything went fine, you should  
-see NLM version information, a copyright message and "Hello world".  
-  
-  
-  
-----  
-  
-!!4. NLM Header file  
-  
-  
-The NLM header file contains information for ''nlmconv(1)''. Each  
-line contains one option or directive; everything after "#" is comment.  
-This chapter describes all options and directives.  
-  
-  
-  
-  
-  
-This chapter is not yet finished, sorry.  
-  
-  
-  
-  
-!!4.1 AUTOUNLOAD  
-  
-  
-  
-''Syntax'':  
-  
-  
-__AUTOUNLOAD__  
-  
-  
-  
-  
-  
-  
-  
-!!4.2 CHECK  
-  
-  
-  
-''Syntax'':  
-  
-  
-__CHECK <check procedure name>__  
-  
-  
-  
-  
-  
-This directive specifies the function to be  
-executed when the NLM is unloaded using the ''UNLOAD'' Server console  
-command. If this function returns zero, the NLM can be unloaded, else  
-the NLM is not ready to be unloaded.  
-  
-  
-  
-  
-  
-''Example'':  
-----  
-  
-CHECK !CheckUnload  
-  
-----  
-  
-  
-  
-  
-!!4.3 CODESTART  
-  
-  
-  
-''Syntax'':  
-  
-  
-__CODESTART <map file code start offset>__  
-  
-  
-Map file start offset may be decimal or Xhex.  
-  
-  
-  
-  
-!!4.4 COPYRIGHT  
-  
-  
-  
-''Syntax'':  
-  
-  
-__COPYRIGHT [["Copyright string"]__  
-  
-  
-The copyright string is displayed on the server console screen when the  
-NLM is loaded. If this option is not used, no copyright information is  
-displayed.  
-  
-  
-  
-  
-  
-''Example'':  
-----  
-  
-COPYRIGHT "Copyright (c) 1998 ABC Inc."  
-  
-----  
-  
-  
-  
-  
-  
-  
-  
-!!4.5 CUSTOM  
-  
-  
-  
-''Syntax'':  
-  
-  
-__CUSTOM <custom data file path>__  
-  
-  
-  
-  
-!!4.6 DATASTART  
-  
-  
-  
-''Syntax'':  
-  
-  
-__DATASTART <map file data start offset>__  
-  
-  
-Map file data start offset may be decimal or Xhex.  
-  
-  
-  
-  
-!!4.7 DATE  
-  
-  
-  
-''Syntax'':  
-  
-  
-__DATE <month, day, year>__  
-  
-  
-  
-  
-  
-  
-  
-!!4.8 DEBUG  
-  
-  
-  
-''Syntax'':  
-  
-  
-__DEBUG__  
-  
-  
-  
-  
-  
-This directive tells the nlmconv(1) to include debugging information in  
-the NLM file.  
-  
-  
-''Example'':  
-----  
-  
-DEBUG  
-  
-----  
-  
-  
-  
-  
-!!4.9 DESCRIPTION  
-  
-  
-  
-''Syntax'':  
-  
-  
-__DESCRIPTION "NLM Description String"__  
-  
-  
-  
-  
-  
-  
-  
-!!4.10 EXIT  
-  
-  
-  
-''Syntax'':  
-  
-  
-__EXIT <exit procedure name>__  
-  
-  
-  
-  
-  
-  
-  
-!!4.11 EXPORT  
-  
-  
-  
-''Syntax'':  
-  
-  
-__EXPORT <symbol list>__  
-  
-  
-__EXPORT @<symbol list file>__  
-  
-  
-  
-  
-  
-  
-  
-!!4.12 FLAG_OFF  
-  
-  
-  
-''Syntax'':  
-  
-  
-__FLAG_OFF <decimal number>__  
-  
-  
-  
-  
-  
-  
-  
-!!4.13 FLAG_ON  
-  
-  
-  
-''Syntax'':  
-  
-  
-__FLAG_ON <decimal number>__  
-  
-  
-  
-  
-  
-  
-  
-!!4.14 HELP  
-  
-  
-  
-''Syntax'':  
-  
-  
-__HELP <help file path>__  
-  
-  
-  
-  
-  
-  
-  
-!!4.15 IMPORT  
-  
-  
-  
-''Syntax'':  
-  
-  
-__IMPORT <symbol list> __  
-  
-  
-__IMPORT @<symbol list file>__  
-  
-  
-  
-  
-  
-  
-  
-!!4.16 INPUT  
-  
-  
-  
-''Syntax'':  
-  
-  
-__INPUT <object file> [[, <object file> [[, ...] ]__  
-  
-  
-__INPUT @<object list file>__  
-  
-  
-  
-  
-  
-This directive lists the input ELF (.o) object files that are to be linked.  
-You can also list the object files in the list file, each object file on  
-one line.  
-  
-  
-  
-  
-  
-''Example'':  
-  
-  
-  
-----  
-  
-INPUT @objectfiles.txt  
-INPUT main.o  
-INPUT /usr/nwsdk/lib/prelude.o  
-  
-----  
-  
-  
-  
-  
-!!4.17 MAP  
-  
-  
-  
-''Syntax'':  
-  
-  
-__MAP [[map file name]__  
-  
-  
-  
-  
-  
-  
-  
-!!4.18 MESSAGES  
-  
-  
-  
-''Syntax'':  
-  
-  
-__MESSAGES <message file path>__  
-  
-  
-  
-  
-  
-  
-  
-!!4.19 MODULE  
-  
-  
-  
-''Syntax'':  
-  
-  
-__MODULE <autoload NLM list>__  
-  
-  
-  
-  
-  
-  
-  
-!!4.20 MULTIPLE  
-  
-  
-  
-''Syntax'':  
-  
-  
-__MULTIPLE__  
-  
-  
-  
-  
-  
-  
-  
-!!4.21 NAMELEN  
-  
-  
-  
-''Syntax'':  
-  
-  
-__NAMELEN <decimal number>__  
-  
-  
-Default is 31. Zero is no limit.  
-  
-  
-  
-  
-  
-  
-  
-!!4.22 OS_DOMAIN  
-  
-  
-  
-''Syntax'':  
-  
-  
-__OS_DOMAIN__  
-  
-  
-  
-  
-  
-  
-  
-!!4.23 OUTPUT  
-  
-  
-  
-''Syntax'':  
-  
-  
-__OUTPUT <target file name>__  
-  
-  
-  
-  
-  
-  
-  
-!!4.24 PATH  
-  
-  
-  
-''Syntax'':  
-  
-  
-__PATH [[search path;...]__  
-  
-  
-  
-  
-  
-for following CUSTOM, HELP, INPUT, MESSAGES, SHARELIB, STAMPEDDATA and XDCDATA.  
-  
-  
-  
-  
-!!4.25 PSEUDOPREEMPTION  
-  
-  
-  
-''Syntax'':  
-  
-  
-__PSEUDOPREEMPTION__  
-  
-  
-  
-  
-  
-  
-  
-!!4.26 REENTRANT  
-  
-  
-  
-''Syntax'':  
-  
-  
-__REENTRANT__  
-  
-  
-  
-  
-  
-  
-  
-!!4.27 SCREENNAME  
-  
-  
-  
-''Syntax'':  
-  
-  
-__SCREENNAME "Initial Screen Name (CLIB)"__  
-  
-  
-  
-  
-  
-  
-  
-!!4.28 SHARELIB  
-  
-  
-  
-''Syntax'':  
-  
-  
-__SHARELIB <shared library path>__  
-  
-  
-  
-  
-  
-  
-  
-!!4.29 STACK  
-  
-  
-  
-''Syntax'':  
-  
-  
-__STACK <stack size>__  
-  
-  
-  
-  
-  
-  
-  
-!!4.30 STACKSIZE  
-  
-  
-  
-''Syntax'':  
-  
-  
-__STACKSIZE <stack size>__  
-  
-  
-  
-  
-  
-  
-  
-!!4.31 STAMPEDDATA  
-  
-  
-  
-''Syntax'':  
-  
-  
-__STAMPEDDATA "Stamp" <data file path>__  
-  
-  
-  
-  
-  
-Stamp is 8 char max.  
-  
-  
-  
-  
-!!4.32 START  
-  
-  
-  
-''Syntax'':  
-  
-  
-__START <start procedure name>__  
-  
-  
-  
-  
-  
-Default is _Prelude.  
-  
-  
-  
-  
-!!4.33 SYNCHRONIZE  
-  
-  
-  
-''Syntax'':  
-  
-  
-__SYNCHRONIZE__  
-  
-  
-  
-  
-  
-  
-  
-!!4.34 THREADNAME  
-  
-  
-  
-''Syntax'':  
-  
-  
-__THREADNAME "Initial Process Name (CLIB)"__  
-  
-  
-  
-  
-  
-  
-  
-!!4.35 TYPE  
-  
-  
-  
-''Syntax'':  
-  
-  
-__ TYPE <version>__  
-  
-  
-  
-  
-  
-This directive specifies the format (NLM, LAN, DSK, NAM) of  
-the NLM file to be generated. Valid values are:  
-  
-  
-  
-  
-  
-* 0 - NLM  
-*  
-  
-* 1 - LAN  
-*  
-  
-* 2 - DSK  
-*  
-  
-* 3 - NAM  
-*  
-  
-  
-  
-  
-  
-  
-''Example'':  
-  
-  
-  
-----  
-  
-TYPE  
-  
-----  
-  
-  
-  
-  
-!!4.36 VERSION  
-  
-  
-  
-''Syntax'':  
-  
-  
-  
-  
-  
-__VERSION <major version>, <minor version>  
-[[, <revision>]__  
-  
-  
-  
-  
-  
-The version information is displayed on the server system console when the NLM  
-loads. The major and minor version numbers can be 0 - 99. The revision  
-can be 0 - 26 ("a" - "z") and is optional. __The version directive is  
-required.__  
-  
-  
-''Example'':  
-  
-  
-  
-----  
-  
-VERSION 1,5  
-  
-----  
-  
-  
-  
-  
-!!4.37 XDCDATA  
-  
-  
-  
-''Syntax'':  
-  
-  
-__XDCDATA <XDC data file path>__  
-  
-  
-  
-  
-  
-  
-----  
-  
-!!5. Message files  
-  
-  
-A message file contains (as you guess) text messages generated by the NLM. You can create it  
-using DOS programs MSGLIB.EXE and MSGMAKE.EXE. I don't know any similar utility  
-for Unix. Sorry, you'll have to use dosemu or DOS machine :-(  
-  
-  
-  
-----  
-  
-!!6. Help Files  
-  
-  
-Help files contain help for use with the NWSNUT user interface library.  
-There is no known Linux utility for creating help files. You must use  
-the DOS program HELPLIB.EXE, which is available from Novell developer site.  
-  
-  
-  
-----  
-  
-!!7. XDC Data Files  
-  
-  
-XDC files are used by !NetWare 5 (or SMP !NetWare 4.x), and store information  
-about symmetric multiprocessing (SMP). You will probably not need them. At least  
-not now :-) Again, there is no Unix utility for creating XDC files,  
-you will have to use the MPKXDC.EXE program (also available on the Novell  
-developer site).  
-  
-  
-  
-  
-  
-  
-----  
-  
-!!8. Header Files (.h)  
-  
-  
-(todo)  
-  
-  
-  
-----  
-  
-!!9. Import Files (.imp)  
-  
-  
-(todo)  
-  
-  
-  
-  
-!!9.1 Generating Import Files Using nlmimp(1)  
-  
-  
-  
-Program nlmimp(1) is part of my nlm-kit package . (todo)  
-  
-  
-  
-----  
+Describe [HowToNLMHOWTO ] here