Shankar Chakkere's DJGPP Page


home/ djgpp

Over the years I have ported many unix utilities using DJGPP development system. The comments are extracted from the README file or MAN page, which is included with the source file.

If you are a programmer like me and who likes to automate things. These pages are maintained using common unix utils. I have explained briefly about managing the homepage using M4 Macroprocessor in here.

Contents:

_________________________________________________________________

1. AGREP version 2.04

AGREP an approximate grep, is a powerful tool for fast searching a file or many files for a string or regular expression, with approximate matching capabilities and user-definable records. It was developed 1989-1991 by Udi Manber and Sun Wu at the University of Arizona and many others.

AGREP is similar to egrep (or grep or fgrep), but it is much more general and usually faster.

Distribution:

ftp://ftp.cs.arizona.edu/agrep/agrep-2.04.tar.Z

Compiling:

Compiles out of the box.

usage:

This is the DOS batch file agreplist.bat I use to create a list of files. The list of files will be stored in dir.lst

	
@ECHO OFF
@REM Shankar Chakkere 5/30/2000
@REM This batch file will create a list file to be used with agrep
@REM usage agreplist filetype > dir.lst
@IF "%1:" == ":"  GOTO help
@rem 12/11/2001 modified to accept multiple file spec
:again
@IF "%1:" == ":"  GOTO done
@dir /b/s/a-d/-l/-p %1 >> dir.lst
shift
goto again

:done
@ECHO The directory list is in the file dir.lst
@ECHO To use this list file with agrep
@ECHO AGREP find-this @dir.lst
GOTO exit

:help
@ECHO USAGE: %0 dir\file
@ECHO Eg. %0 \usr\shankar\*.c ..\*.h
@ECHO The directory list will be in the file dir.lst
:exit

agreplist *.c *.h *.inc

agrep -i display @dir.lst

2. rgrep version 1.6

rgrep, a recursive, highlighting grep program. Unlike grep and egrep, rgrep has the ability to recursively descend directories. rgrep is part of JED editor.

Note:

GNU grep can descend directories recursively with -r option, but it searches all the files. You have to use with find & xargs to search for a particular file type. Examples from GNU document.


 grep -r 'hello' /home/gigi

searches for  hello in all files under the directory  home/gigi.

For more control of which files are searched, use find, grep and xargs.

For example, the following command searches only C files: 

 find /home/gigi -name '*.c' -print | xargs grep 'hello' /dev/null

This differs from the command:
  
 grep -r 'hello' *.c

which merely looks for  hello in all files in the current directory whose names end in  .c.
Here the  -r is probably unnecessary, as recursion occurs only in the unlikely event that one of  .c files
is a directory

Distribution:

rgrep

Compiling:

Compiles out of the box.

usage:

from the man pages.

Look in all files with a 'c' extension in current directory and all its subdirectories looking for matches of 'int ' at the beginning of a line, printing the line containing the match with its line number: (two methods)

	
rgrep -n -R '*.c'  '^int  ' 
 
	
rgrep -n -x c '^int  '

Search through all files EXCEPT .o and .a file below /usr/src/linux looking for the string 'mouse' without regard to case:

	
 rgrep -i -R '*.[^ao]' mouse /usr/src/linux
 

3. Giftrans

GIFtrans v1.12.2 Convert any GIF file into a GIF89a. Allows for setting the transparent or background color, changing colors, adding or removing comments. Also code to analyze GIF contents.

Distribution:

ftp://ftp.rz.uni-karlsruhe.de/pub/net/www/tools/

You need to download giftrans.c and rgb.txt files.

I created the following Makefile to compile. Define the RGBTXT to point to rgb.txt in your system


#Shankar Chakkere 6/19/2000
OPTS=
CC=     gcc
# Shankar 2/11/2002 CFLAG=	-O2 
CFLAG=	-O2 -UMSDOS -DRGBTXT="/djgpp/lib/rgb.txt"

CFLAGS= $(OPTS) $(CFLAG)

#giftrans.exe 
giftrans.exe: giftrans.c
	$(CC) $(CFLAGS) -o giftrans giftrans.c

clean:
	rm -f  *.o  *.obj
	
Compiling:

Compiles without a hitch.

4. ROBODoc Version 3.1e

ROBODoc extracts specially formatted documentation from the source code. It allows you to maintain a program and its documentation in a single file.

ROBODoc works with many programming languages: For instance C, Pascal, Shell Scripts, Assembler, COBOL, Occam, Postscript, Forth, Tcl/Tk, C++, Java -- basically any program in which you can use remarks/comments.

Distribution:

http://www.xs4all.nl/~rfsber/Robo/

Compiling:

Compiles out of the box.

5. Ytree

ytree-1.70 is a DOS-XTREE(tm) like file manager.

Distribution:

ftp://sunsite.unc.edu /pub/Linux/utils/file/managers

http://www.han.de/~werner/ytree.html

Compiling:

Ytree needs pdcurses library.

Note:

View option needs PAGER environment variable to be set.

6. mkmf Version 4.11

mkmf -- make Makefile -- a Makefile generator. Creates program and library makefiles for the make command.

Distribution:

http://www.netsw.org/softeng/versioncontrol/control/make/mkmf-4.11.tar.gz

Compiling:

Add the following function in file: mksymlink.c:71


#if __DJGPP__ 
int readlink (char *path, char *buf, int bufsiz)
{
  /* DOS dosen't have symbolic links in the UNIX sense */
  return -1;
}

Modify the following defines in the root Makefile

INSTALLDIR    = /djgpp
SHELL	      = /djgpp/bin/bash

 ~/develop/mkmf-4.11/make 
Creates the mkmf executable in the src directory

Using:

copy contents of templates directory to /djgpp/lib/mkmf directory.

 
~/develop/mkmf-4.11 > mkdir /djgpp/lib/mkmf
~/develop/mkmf-4.11 > cp  templates/*  /djgpp/lib/mkmf/
 
To create a Makefile using mkmf.
 ~/develop/zodiac > mkmf CFLAGS=-I/djgpp/include 
mkmf: creating Makefile from /djgpp/lib/mkmf/C.p

7. Hexedit Version 0.9.3

Hexedit is a full screen text mode Hex editor using the curses library.

Distribution:

http://www.rogoyski.com/adam/programs/

Compiling:


bash configure
make

Modified SHELL and prefix in the Makefile in docs/, gnu/ and src/ directory. Also added LIBS = -lpdcurses since djgpp has pdcurses instead of curses library.

file: init.c:553


#ifndef __DJGPP__ 
      sig_a.sa_flags = SA_NODEFER;
#else
      sig_a.sa_flags = 1;
#endif      

file: hexkeys.c

In function void hexMode (wchar_t in)


         /* 
	  * Shankar Chakkere added this for exit 2/7/2002
	  */
	case CONTROL_C:
	 exitProgram();
	 break;
 

file: asciikey.c

In function void asciiMode (wchar_t in)


         /* 
	  * Shankar Chakkere added this for exit 2/7/2002
	  */
	case CONTROL_C:
	 exitProgram();
	 break;
 

8. Ref / Elvis Version 2.1_4

ref quickly locates and displays the header of a function. To do this, ref looks in the "tags" file for the line that describes the function, and then scans the source file for the function. When it locates the function, it displays an introductory comment (if there is one), the function's declaration, and the declarations of all arguments.

ref is distributed along with elvis the vi clone.

Distribution:

ftp://ftp.cs.pdx.edu/pub/elvis

Compiling:


bash configure
make ref

Note:

You can use the TAGS file created by exuberant ctags which comes with vim or create one by

 make ctags
command.

Using:

ref -c prints the function definition without introductory comments. I exploited this feature to generate hints, the VIM script. The hints when sourced to C file you are editing, will display the function name header on the information. I got this idea from Dr Chip's Vim Page.

The script to generate hints


#!/bin/sh
# This script will generate the hint file to be used with vim.
# The hint file is a VIM script which when sourced with the current C file you are editing,
# will print the function prototype on the VIM information line when you type in that function.
# Got the idea from Dr. Chip's [ http://users.erols.com/astronaut/vim/] flist program.
# This shell script duplicates what flist -h does.
# Usage:
# 1. Generate tags file using ctags
# 2. Create the hints file using vimhint (this file) > hints
# 3. Source hints into your editing ( :so hints ) file
# 			or
# put the following code into your <.vimrc> for automatic
# sourcing of hints:
#
# if filereadable(expand("hints"))
#   au BufNewFile,BufReadPost *.c,*.C,*.cpp,*.CPP,*.cxx  so hints
# endif
# 
#  TODO: get tags file from command line
#	report error if no tags file found

for function in   `grep -w f tags | cut -f1`           # list all the functions from the tag file
do
        funheader=$(ref -c $function | tr -d '[\n\r\t]' )  # ref lists the function header even if it is multiple line
                                                           # tr translates multiline to single line.
	echo "inorea $function $function<ESC>ma:echo \"$funheader\"<CR>\`aa " 
done


Every time you type a function name, a prototype for it will appear on the information line. If you don't see it, you should set your cmdheight to 2 or more (:set ch=2)

9. makedepend

makedepend creates dependencies in makefiles. Makefiles reads each sourcefile in sequence and parses it like a C-preprocessor, processing all

#include,
#define,
#undef,
#ifdef,
#ifndef,
#endif,
#if,
#elif
&
#else

directives so that it can correctly tell which #include directives would be used in a compilation.

Distribution:

http://cvs.motifzone.net/

Click google to locate the source directory. I downloaded all the files in that directory and imakemdep.h from imake directory.

Compiling:

Created Makefile


.SUFFIXES= .o .c .h
CC=gcc

OBJS= cppsetup.o ifparser.o include.o main.o parse.o pr.o
CFLAGS=-g -O2  -DINCLUDEDIR=\"/djgpp/include\"  -D__EMX__ -DOBJSUFFIX=\".o\"
 
.c.o:
		$(CC) $(CFLAGS) $(CPPFLAGS) -c $<

makedepend: $(OBJS)
	$(CC) -o makedepend $(OBJS)
clean: 
	rm -f *.o makedepend makedepend.exe

Made the following changes.

file : def.h:43


#if __DJGPP__ 
#include "Xos.h"
#include "Xfuncproto.h"
#endif

 ~/develop/makedepend > make 
Creates the executable.

10. Antiword Version 0.30

AntiWord is an application to display Microsoft Word files on non-MS OS OS machines.

Distribution:

http://www.winfield.demon.nl/index.html

Compiling: This program compiles under DJGPP V2 without a hitch using

make -f makefile.linux

command

11. cscope

For more details visit my cscope page

12. hex2bin mot2bin

Intel/Motorola Hex file format to binary converter.

Distribution:

ftp://metalab.unc.edu/pub/Linux/devel/lang/assemblers/

Compiling:

Compiles out of the box

Bug fix:

The code interprets 0x0a in hex file as LF and puts it as 0x0d 0x0a in the binary file.

file: mot2bin.c and hex2bin.c

In function void NoFailOpenOutputFile (char *Flnm)

make the following modification.


#ifndef __DJGPP__ 
	while ((Filout = fopen(Flnm,"w")) == NULL)
#else
	while ((Filout = fopen(Flnm,"w+b")) == NULL)
#endif

13. bcpp

C(++) Beautifier V1.9

Distribution:

http://dickey.his.com/bcpp/bcpp.html

Compiling:

cd code
make

builds bcpp

Note:

Place bcpp.exe, indent.bat, bcpp.cfg, indent.cfg, bcppall.bat in the same directory.

14. global

For more details visit my global page

15. cshow

cshow - a program to print the definition of a C-identifier. It needs tag file created by Exuberant tags.

Distribution:

http://users.pandora.be/bdr/pub/cshow/

Compiling:

compiles out of the box.

Going Further:

I have added the following options, to make it much more useful.


   -i, --ignorecase    : Ignore case.
   -l, --taglength n   : Check only the first n characters of tag names.
   -a, --all           : List all tag matches.
   -b, --brief         : List briefly.
   
Here are some outputs of the new options

find all the definitions which starts with the letter e.
~/cshow>cshow -i -a -t d --taglength 1 e
"EILLEGAL" definitions.h:15
#define EILLEGAL         1
--------------------------------------------------------------------------------
"EMALLOC" definitions.h:17
#define EMALLOC          3
--------------------------------------------------------------------------------
"ENOT_FOUND" definitions.h:18
#define ENOT_FOUND       4
--------------------------------------------------------------------------------
"ENOT_SUPPORTED" definitions.h:16
#define ENOT_SUPPORTED   2
--------------------------------------------------------------------------------
"EOK" definitions.h:14
#define EOK              0

find all the structures with starts with the letter T or t.
~/cshow>cshow -a -i -t s -l 1 T
"tag_entry" lookup.h:34
struct tag_entry {
    struct tag_entry *next;
    char *identifier;
    enum e_identifier_type id_type;
    int tag_length;
    enum icase case_type;
    enum iall all;

    char *filename;
    struct search_pattern spat;
};
--------------------------------------------------------------------------------
"tagtypes" identifiertype.c:10
struct tagtypes {
    char short_type;
    char *long_type;
};

~/cshow/cshow-0.3>cshow  -i -a -l 2 -t u u_
"u_pat" lookup.h:21
union u_pat {
    unsigned long int line_no;
    char *search_line;
};

~/cshow/cshow-0.3>cshow -b -i -a -l 2 -t u u_
"u_pat" lookup.h:21
union u_pat

find all the function which starts with letters pr, ignore the case and be
brief. By default cshow prints the whole function.
~/cshow/cshow-0.3>cshow -b -i -a -l 2 -t f pr
"print_character_delimited" print.c:154
int print_character_delimited (struct print_io *io, char delim, enum ibrief brief)

--------------------------------------------------------------------------------
"print_comma_delimited" print.c:232
int print_comma_delimited (struct print_io *io, enum ibrief brief)

--------------------------------------------------------------------------------
"print_definition" print.c:14
int print_definition (struct print_io *io)

--------------------------------------------------------------------------------
"print_function_body" print.c:76
int print_function_body (struct print_io *io, enum ibrief brief)

--------------------------------------------------------------------------------
"print_semicolon_delimited" print.c:237
int print_semicolon_delimited (struct print_io *io, enum ibrief brief)

The diff file to patch cshow-0.2-pre2.tgz

16. c_count Version 7.2

C_COUNT counts C-language source statements, and summarizes statistics about the relative amount of commentary, whitespace, etc.

Distribution:

ftp://ftp.clark.net/pub/dickey/c_count/

Compiling:


bash configure
make

Generates the following error

mv c_count oc_count
c:/djgpp/bin/mv: c_count: No such file or directory (ENOENT)
make.exe: [c_count] Error 1 (ignored)

but creates the executable.

Output:


~/develop/c_coun~1.2 > c_count c_count.c
  1048   361   |c_count.c
----------------
  1048   361    total lines/statements

   161  lines had comments        15.4 %
    27  comments are inline       -2.6 %
    83  lines were blank           7.9 %
    41  lines for preprocessor     3.9 %
   790  lines containing code     75.4 %
  1048  total lines              100.0 %

  4449  comment-chars             18.4 %
   937  nontext-comment-chars      3.9 %
  5240  whitespace-chars          21.7 %
   653  preprocessor-chars         2.7 %
 12902  statement-chars           53.4 %
 24181  total characters         100.0 %

  1816  tokens, average length 4.87

  0.33  ratio of comment:code

17. CINT Version 5.14.66

The CINT C/C++ Interpreter has following features.

Distribution:

ftp://root.cern.ch/root/

Compiling:

	
cp platform/djgpp/Makefile src
cp platform/djgpp/Makeinfo src
cd src
make

Note:

You need to set the environment variable as follows.


@REM For Cint c/c++ interpretor
@SET CINTSYSDIR=c:\djgpp\bin
@SET PATH=%PATH%;%CINTSYSDIR%

18. CWEB Version 3.63

CWEB is a tool designed for literate programming based on WEB defined by D.E. Knuth. CWEB program converts a CWEB source document into a C program.

Distribution:

http://www.literateprogramming.com/cweb.tar.gz

Compiling:

make -f Makefile.djp 

19. Hexdump Version 3.0.8

Is a part of util-linux-2.11g package

Distribution:

http://www.kernel.org/pub/linux/utils/util-linux/

This is what it did to extract the Hexdump package.

  1. I had to create defines.h from running ./configure shell script in root dir
  2. Extracted files from HexDump subdir under text-util dir.
  3. Copied nls.h file from lib subdir.
  4. added the following line in hexdump.h
    #include < sys/types.h > /* Shankar Chakkere added for u_int 7/19/01*/
    
  5. added the following line in hexdump.c
    #include  < locale.h > /* Shankar Chakkere for LC_ALL 7/19/01 */
    
  6. Created a Makefile
Here is the Makefile.

# Makefile -- Makefile for hexdump from util-linux utilities
# Created:  Jul 19 09:56:40 2001
#Shankar Chakkere

USRBIN=	 hexdump 
CFLAGS= -O2 -Wall #-ggdb
.SUFFIXES:	.c .o

.c.o:
		$(CC) $(CFLAGS) -c $< -o $&

all: $(USRBIN)
# Rules for hexdump
HEXDUMP = hexdump.o \
	  conv.o \
	  display.o \
	  hexsyntax.o \
	  odsyntax.o \
	  parse.o
hexdump:$(HEXDUMP)
		$(CXX) $(HEXDUMP) -o $&
hexdump.o: hexdump.c hexdump.h
conv.o: conv.c hexdump.h
display.o: display.c hexdump.h
hexsyntax.o: hexsyntax.c hexdump.h
odsyntax.o: odsyntax.c hexdump.h
parse.o: parse.c hexdump.h

.PHONY: clean
clean:
	-rm -f *.o *~ core $(USRBIN)

This is the format I use to hexdump like DOS debugger

hexdump -e ' "%6.6_ax " 8/1 "%02x " "-" 8/1 "%02x " "\t" 16/1 "%_p" "\n"' test.bin

Note:

Quotes are need around the format string.

Bug fix:

Stops reading the binary file if there is "CTRL-Z"(0x1A) in it. This problem is specific to DOS

file: display.c

In function int next(char **argv)


#if __DJGPP__ 
/* Shankar Chakkere 9/11/2001. 
 * Stops reading the binary file if there is "CTRL-Z"(0x1A) in it.
 */
		if (!(freopen(*_argv, "r+b", stdin))) {
#else		
		if (!(freopen(*_argv, "r", stdin))) {
#endif

20. Srecord Version 1.8

This is one of the useful tool for an embedded engineer. The SRecord package is a collection of powerful tools for manipulating EPROM load files. More than one filter may be applied to each input file. Different filters may be applied to each input file. All filters may be applied to all file formats.

Distribution:

http://www.canb.auug.org.au/~millerp/srecord/

Compiling:

Compiles out of the box after running ./configure

21. MOST version 4.9.0

Is a paging program that displays, one windowful at a time, the contents of a file on a terminal. It pauses after each windowful and prints on the window status line the screen the file name, current line number, and the percentage of the file so far displayed.

Unlike other paging programs, most is capable of displaying an arbitrary number of windows as long as each window occupies at least two screen lines. Each window may contain the same file or a different file.

In addition, each window has its own mode. For example, one window may display a file with its lines wrapped while another may be truncating the lines. Windows may be locked together in the sense that if one of the locked windows scrolls, all locked windows will scroll.

most is also capable of ignoring lines that are indented beyond a user-specified value. This is useful when viewing computer programs to pick out gross features of the code.

Distribution:

ftp://space.mit.edu/pub/davis/most

Compiling:

It will compile out of the box if you have slang library. This library is available at ftp://space.mit.edu/pub/davis/slang

22. ctags Version 5.2.1

Exuberant Ctags is a Multilanguage reimplementation of the much underused ctags program and is intended to be the mother of all ctags programs.

Distribution:

http://ctags.sourceforge.net

Compiling:


bash configure

Edit Makefile to reflect
	
prefix = ${DJDIR}
SHELL=${prefix}/bin/bash

If you want to use internal sorting, edit config.h to reflect
	
#ifndef INTERNAL_SORT
# define INTERNAL_SORT 1
#endif

 make 
Creates the executable.

23. espresso Version 2.3

Espresso takes as input a two-level representation of a two-valued (or multiple-valued) Boolean function, and produces a minimal equivalent representation. The algorithms used are new and represent an advance in both speed and optimality of solution in heuristic Boolean minimization.

Distribution:

http://www-cad.eecs.berkeley.edu/Software/software.html

Compiling:

file: port/port.h:161


#ifndef __DJGPP__ 
extern VOID_HACK srandom();
#endif 

~/develop/espresso > make
copy files

~/develop/espresso > cp port/ansi.h include/
~/develop/espresso > cp port/copyright.h  include/
~/develop/espresso > cp errtrap/errtrap.h include/

Made the following changes.

file: mem/mem.c


138:
#ifndef __DJGPP__
/* comment out  malloc() free() et.al  when you can use the library*/
376:
#endif /* #ifndef __DJGPP__  */

file: utility/csystem.c

int
util_csystem(s)
char *s;
{
#ifndef __DJGPP__ 
/* I don't know the consequence of this */
  ......
#else
    return -1;
#endif
}

file: espresso/espresso.h:766

#ifndef __DJGPP__ 
/* ucbqsort.c */	extern qsort();
#endif

file: espresso/signature.c:37

#ifndef __DJGPP__ 
/* I don't know the consequence of this */
	signal(SIGXCPU,cleanup);
#endif

~/develop/espresso > make
You get the following error

make.exe[1]: Leaving directory c:/usr/shankar/develop/espresso/utility
make.exe: *** [all] Error 2

~/develop/espresso > cd espresso/
~/develop/espresso/espresso > make CAD=..
You get the following error

make.exe: *** No rule to make target ../lib/llib-lutility.ln, needed by lint
.  Stop.

file: espresso/Makefile:129

#all: tags lint ${TARGET}
all: tags ${TARGET}

~/develop/espresso/espresso > make CAD=..
Creates executable.

I verified with the DOS espresso I had.


~/develop/espresso/espresso > cat eq.pla
#
.i 3
.o 1
# The product term belongs to the ON-set
.type f
.phase 1
000 1
001 1
100 1
101 1
110 1
.end

~/develop/espresso/espresso > espresso -Dsimplify -oeqntott eg.pla
#
# The product term belongs to the ON-set
v3.0 = (!v1) | (v0&!v2);

checking with the one I got from the internet
~/develop/espresso/espresso  > espr-2-3 -Dsimplify -oeqntott eg.pla
#
# The product term belongs to the ON-set
v3.0 = (!v1) | (v0&!v2);

They behave in the same way.

24. Tidy

When editing HTML it's easy to make mistakes. Wouldn't it be nice if there was a simple way to fix these mistakes automatically and tidy up sloppy editing into nicely layed out markup? Well now there is! Dave Raggett's HTML TIDY is a free utility for doing just that. It also works great on the atrociously hard to read markup generated by specialized HTML editors and conversion tools, and can help you identify where you need to pay further attention on making your pages more accessible to people with disabilities.

Tidy is able to fix up a wide range of problems and to bring to your attention things that you need to work on yourself. Each item found is listed with the line number and column so that you can see where the problem lies in your markup. Tidy won't generate a cleaned up version when there are problems that it can't be sure of how to handle. These are logged as "errors" rather than "warnings".

Support for Word2000

Tidy can now perform wonders on HTML saved from Microsoft Word 2000! Word bulks out HTML files with stuff for round-tripping presentation between HTML and Word.

Distribution:

http://tidy.sourceforge.net/

Compiling:

~/develop/tidy > cp Makefile Makefile.djp
Append
 -DHAS_FUTIME=0
to CFLAGS macro. in Makefile.djp
~/develop/tidy > make -f Makefile.djp
creates the executable.

25. GNU Nano Version 1.0.8

GNU Nano is designed to be a free replacement for the Pico text editor, part of the PINE email suite from {The University of Washington}. It aims to "emulate Pico as closely as possible and perhaps include extra functionality.

Distribution:

http://www.nano-editor.org

Compiling:

You need to have glib version > = 1.2.4 and pdcurses libraries.

Glib compiles easily in djgpp. You can get pdcurses from http://pdcurses.sourceforge.net

 ~/develop/nano-1.0.8/bash configure 
creates Makefile's and config.h

Did following modifications to Makefile:


DEFS = -DHAVE_CONFIG_H   -DNANO_SMALL  -DDISABLE_BROWSER  -DDISABLE_JUSTIFY -I. -I$(srcdir) -I.
LIBS = -lpdcurses -lpanel  -lglib 

Modified the following files because DOS/WINDoze does not support symbolic links.

file: files.c: 357


#ifndef __DJGPP__ 
    anyexists = lstat(realname, &lst);

file: files.c: 388

        else {
#endif

file: files.c:402

#ifndef __DJGPP__ 
    }
#endif

file: files.c:449

#ifndef __DJGPP__ 
    if (realexists == -1 || tmp ||
		(!ISSET(FOLLOW_SYMLINKS) && S_ISLNK(lst.st_mode))) {
#else
    if (realexists == -1 || tmp) {
#endif

file: files.c:466

#ifndef __DJGPP__ 
        if (!tmp && (!ISSET(FOLLOW_SYMLINKS) && S_ISLNK(lst.st_mode))) {
#else
        if (!tmp && (!ISSET(FOLLOW_SYMLINKS) )) {
#endif

file: files.c:1311

#ifndef __DJGPP__ 
	    	    lstat(filelist[j], &st);

file: files.c:1336

	    }
#endif

file:nano.c:1812

#ifndef __DJGPP__ 
    act.sa_handler = handle_sigwinch;
        sigaction(SIGWINCH, &act, NULL);
#endif

file:nano.c:1842

#ifndef __DJGPP__ 
	act.sa_handler = do_suspend;
		sigaction(SIGTSTP, &act, NULL);

	act.sa_handler = do_cont;
		sigaction(SIGCONT, &act, NULL);
#endif

file:nano.c:2161

#ifndef __DJGPP__ 
    /* And for the toggle list, we also allocate space for extra text. */
        for (i = 0; i <= TOGGLE_LEN - 1; i++)
	if (toggles[i].desc != NULL)
	    allocsize += strlen(toggles[i].desc) + 30;
#endif

file:nano.c:2203

#ifndef __DJGPP__ 
    /* And the toggles... */
        for (i = 0; i <= TOGGLE_LEN - 1; i++) {
	sofar = snprintf(buf, BUFSIZ,
			 "M-%c			", toggles[i].val - 32);

	if (toggles[i].desc != NULL)
	    snprintf(&buf[sofar], BUFSIZ - sofar, _("%s enable/disable"),
		     toggles[i].desc);

	strcat(help_text, buf);
	strcat(help_text, "\n");
    }
#endif

The linker complains that


winio.o: In function horizbar:
winio.c:466: undefined reference to wattr_on
winio.c:468: undefined reference to wattr_off

I had to disable the references to wattron() and wattroff() even though the pdcurses supports it. I will investigate it later. I will also try to compile it with SLANG.
 ~/develop/nano-1.0.8/make 
Creates the Nano executable in root directory.

26. Glib Version 1.2.9

GLib is a library that includes support routines for C such as lists, trees, hashes, memory allocation, and many other things.

Distribution:

ftp://ftp.gtk.org/pub/gtk

Compiling:

 
~/develop/glib-1.2.9 >  bash configure
 
Creates Makefile's , config.h & glibconfig.h

I have to do following modifications to compile

file: config.h


/*#define HAVE_PWD_H 1*/
#undef HAVE_PWD_H 

file: gerror.c :195

In function static void stack_trace (char **args);


#if __DJGPP__ 
#define NATIVE_WIN32 1
#endif

file: gutils.c:545


#ifndef __DJGPP__ 
	    g_real_name = g_strdup (pw- > pw_gecos);
#else
	    g_real_name = g_strdup (pw- _GTpw_name);
#endif

file:glib-config

#!/djgpp/bin/bash
prefix=/djgpp
#echo -I${prefix}/include/glib-1.2 -I${exec_prefix}/lib/glib/include $includes $cflags
echo -I${prefix}/include/ -I${exec_prefix}/lib/ $includes $cflags

 
~/develop/glib-1.2.9 >  make 
 
Creates the libglib.a lib.

Here is the manifest file used to create the DJGPP packet.


bin/glib-config
doc/glib/AUTHORS
doc/glib/README
doc/glib/glib.html
doc/glib/glib_toc.html
include/glib.h
include/glibconfig.h
info/glib.info
lib/libglib.a
man/man1/glib-config.1
manifest/glib129b.ver
manifest/glib129b.mft

27. Zlib Version 1.1.3

zlib is designed to be a free, general-purpose, legally unencumbered -- that is, not covered by any patents -- lossless data-compression library forr use on virtually any computer hardware and operating system. The Zlib data format is itself portable across platforms. Unlike the LZW compression method used in Unix compress(1) and in the GIF image format, the compression method currently used in Zlib essentially never expands the data. (LZW can double or triple the file size in extreme cases.) Zlib's memory footprint is also independent of the input data and can be reduced, if necessary, at some cost in compression.

Distribution:

ftp://ftp.uu.net/graphics/png/src/zlib-1.1.3.tar.gz

Compiling:

 
~/develop/zlib-1~1.3 > ./configure --prefix=c:/djgpp --exec_prefix=c:/djgpp
~/develop/zlib-1~1.3 > make
 
Creates libz.a minigzip.exe and example.exe in root directory.

Here is the manifest file used to create DJGPP packet.


doc/zlib/FAQ
doc/zlib/README
doc/zlib/algorithm.txt
doc/zlib/Makefile
doc/zlib/example.c
include/zlib.h
include/zconf.h
include/zutil.h
lib/libz.a
man/man3/zlib.3
manifest/zlib113b.ver
manifest/zlib113b.mft

29. Par Version 1.52

Par is a paragraph reformatter, vaguely similar to fmt, but better. I use it to format the C comments in VIM.

Distribution:

http://www.cs.berkeley.edu/~amc/Par/

Compiling:

Compiles out of the box after changing CC with GCC in the Makefile.

usage:

To format a paragraph in VIM add this to your .vimrc

	
map somekey j{!}par^M " To enter ^M in vim do ctrl-v ctrl-m
                      " somekey is some key combination you like.

Back To Contents


DJGPP's Web Ring

Previous Site         Ring's Home         Next Site
Random Site         Skip Next Site         List Next 5 Sites


You are   Counter   th visitor.

__________________________________________________________________
Last Update : July 23, 2002 11:12:21 AM EDT Mail me if you have any suggestions.


This page is on http://www.geocities.com/shankara_c/djgpp.html Back to Shankar's Home Page
Hosted by www.Geocities.ws

1