Better ANSI C compatibility and portability - part 1:
authorcarl <cecodere@yahoo.ca>
Mon, 18 Feb 2019 16:31:58 +0000 (00:31 +0800)
committercarl <cecodere@yahoo.ca>
Mon, 18 Feb 2019 16:54:23 +0000 (00:54 +0800)
+ Addition of function prototypes.
+ Change function definitions to ANSI C style.
+ Convert to sed scripts some shell scripts for better portability.
+ Reduce usage of em_path.h

12 files changed:
modules/src/alloc/Amake.srclist
modules/src/alloc/CMakeLists.txt [new file with mode: 0644]
modules/src/alloc/Malloc.c
modules/src/alloc/No_Mem.c
modules/src/alloc/Realloc.c
modules/src/alloc/Salloc.c
modules/src/alloc/Srealloc.c
modules/src/alloc/alloc.3
modules/src/alloc/botch.c
modules/src/alloc/clear.c
modules/src/alloc/st_alloc.c
modules/src/alloc/std_alloc.c

index 377a0a5..829f218 100644 (file)
@@ -1,13 +1,13 @@
-L_ACK_MODULES_ALLOC = {
-       $PWD/Malloc.c,
-       $PWD/Salloc.c,
-       $PWD/Srealloc.c,
-       $PWD/Realloc.c,
-       $PWD/botch.c,
-       $PWD/clear.c,
-       $PWD/st_alloc.c,
-       $PWD/std_alloc.c,
-       $PWD/No_Mem.c,
-       $PWD/alloc.h
-};
-
+L_ACK_MODULES_ALLOC = {\r
+       $PWD/Malloc.c,\r
+       $PWD/Salloc.c,\r
+       $PWD/Srealloc.c,\r
+       $PWD/Realloc.c,\r
+       $PWD/botch.c,\r
+       $PWD/clear.c,\r
+       $PWD/st_alloc.c,\r
+       $PWD/std_alloc.c,\r
+       $PWD/No_Mem.c,\r
+       $PWD/alloc.h\r
+};\r
+\r
diff --git a/modules/src/alloc/CMakeLists.txt b/modules/src/alloc/CMakeLists.txt
new file mode 100644 (file)
index 0000000..0592965
--- /dev/null
@@ -0,0 +1,29 @@
+cmake_minimum_required (VERSION 3.0)
+project (alloc)
+
+set(SRC 
+ botch.c 
+ clear.c 
+ Malloc.c 
+ No_Mem.c 
+ Realloc.c 
+ Salloc.c
+ Srealloc.c
+ std_alloc.c
+ st_alloc.c
+ alloc.h
+)
+
+
+add_library(${PROJECT_NAME} ${SRC})
+target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
+set_target_properties(${PROJECT_NAME} PROPERTIES PUBLIC_HEADER "alloc.h")
+
+install(TARGETS ${PROJECT_NAME} 
+        RUNTIME DESTINATION bin
+        LIBRARY DESTINATION lib
+        ARCHIVE DESTINATION lib
+        PUBLIC_HEADER DESTINATION include
+)
+install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/alloc.3 DESTINATION man OPTIONAL)
+
index 6077829..567b2dc 100644 (file)
@@ -17,9 +17,7 @@ extern char *malloc();
 #endif
 #include       "alloc.h"
 
-char *
-Malloc(sz)
-       unsigned int sz;
+char *Malloc(unsigned int sz)
 {
        register char *res = malloc(sz);
        
index 8011c1f..2cd3fd0 100644 (file)
@@ -1,14 +1,15 @@
 /* $Id$ */
 /*
  * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
+
  * See the copyright notice in the ACK home directory, in the file "Copyright".
  */
-#include       <system.h>
+#include    <stdio.h>
+#include    <stdlib.h>
 #include       "alloc.h"
 
-void
-No_Mem()
+void No_Mem(void)
 {
-       sys_write(STDERR, "Out of memory\n", 14);
-       sys_stop(S_EXIT);
+       fprintf(stderr,"Out of memory\n");
+       exit(1);
 }
index 0399dc0..35c6fbf 100644 (file)
@@ -19,10 +19,7 @@ extern char *realloc();
 
 #include       "alloc.h"
 
-char *
-Realloc(ptr, sz)
-       char ptr[];
-       unsigned int sz;
+char *Realloc(char ptr[], unsigned int sz)
 {
        register char *mptr;
 
index 7f98690..1422b18 100644 (file)
@@ -19,10 +19,7 @@ extern char *malloc();
 
 #include       "alloc.h"
 
-char *
-Salloc(str, sz)
-       register char *str;
-       register unsigned int sz;
+char *Salloc(register char *str, register unsigned int sz)
 {
        /*      Salloc() is not a primitive function: it just allocates a
                piece of storage and copies a given string into it.
index d799f6f..32ddf9a 100644 (file)
 
 #include       "alloc.h"
 
-char *
-Srealloc(str, sz)
-       char str[];
-       unsigned int sz;
+char *Srealloc(char str[], unsigned int sz)
 {
        return Realloc(str, sz);
 }
index f7c963c..cd7bfbf 100644 (file)
-.TH ALLOC 3 "$Revision$"
-.ad
-.SH NAME
-Malloc, Salloc, Realloc, Srealloc, st_alloc, st_free\ \-\ low level memory allocation routines
-.SH SYNOPSIS
-.B #include <alloc.h>
-.PP
-.B char *Malloc(size)
-.br
-.B unsigned int size;
-.PP
-.B char *Salloc(str, size)
-.br
-.B char *str;
-.B unsigned int size;
-.PP
-.B char *Realloc(ptr, size)
-.B char *buf;
-.B unsigned int size;
-.PP
-.B char *Srealloc(str, size)
-.br
-.B char *str;
-.br
-.B unsigned int size;
-.PP
-.B char *st_alloc(phead, size, count)
-.br
-.B char **phead;
-.br
-.B unsigned int size;
-.PP
-.B st_free(ptr, phead, size)
-.br
-.B char *ptr;
-.br
-.B char **phead;
-.br
-.B unsigned int size;
-.PP
-.B void clear(ptr, size)
-.br
-.B char *ptr;
-.br
-.B unsigned int size;
-.PP
-.void No_Mem()
-.PP
-.SH DESCRIPTION
-This set of routines provides a checking memory allocation mechanism.
-.PP
-\fIMalloc\fR returns a pointer to a block of at least \fIsize\fR
-bytes, beginning on a boundary suitable for any data type.
-.PP
-\fISalloc\fR returns a pointer to a block of at least \fIsize\fR
-bytes, initialized with the null-terminated string \fIstr\fR.
-.PP
-\fIRealloc\fR changes the size of
-the block at \fIbuf\fR to \fIsize\fR bytes, and returns a pointer to the
-(possibly moved) block. If \fIbuf\fP is a null pointer, \fIRealloc\fP
-behaves as \fIMalloc\fP.
-.PP
-\fISrealloc\fR reallocates
-the string at \fIstr\fR to \fIsize\fR bytes.
-It actually does the same as \fIRealloc\fP, and exists only for
-backwards compatibility.
-.PP
-All these routines use \fImalloc\fR and \fIrealloc\fR.
-The routine \fIfree\fR can be used on pointers returned by these routines.
-.PP
-\fISt_alloc\fR and \fIst_free\fR provide a mechanism for maintaining free lists
-of structures.
-\fISt_alloc\fR takes three parameters: \fIphead\fR is a pointer to a field
-containing the head of the free list, \fIsize\fR contains the size of the
-structures, and \fIcount\fR indicates how many new structures must be allocated
-in case the free list is exhausted.
-It returns a pointer to a zero-initialized structure.
-\fISt_free\fR also takes three parameters: \fIptr\fR is a pointer to
-the structure to be freed, \fIphead\fR is again a pointer to a field
-containing the head of the free list, and \fIsize\fR again contains the size
-of the structures.
-These last two routines are best used in a macro.
-.PP
-\fIClear\fR clears \fIsize\fR bytes, starting at \fIptr\fR.
-.SH FILES
-.nf
-~em/modules/h/alloc.h
-~em/modules/lib/liballoc.a
-.fi
-.SH "MODULES USED"
-system(3)
-.SH "SEE ALSO"
-malloc(3)
-.SH DIAGNOSTICS
-\fIMalloc\fR, \fISalloc\fR, \fIRealloc\fP, \fISrealloc\fR, and \fIst_alloc\fR
-call a routine \fINo_Mem\fR if there is no memory available. This routine
-is not supposed to return. A default one, that
-gives an error message and stops execution, is provided.
-.SH BUGS
-The
-.I st_alloc
-mechanism only works for structures that are large enough to contain one
-pointer.
-Also,
-.I st_free
-actually is a macro, and references its arguments more than once, so they
-better not have side-effects.
+.TH ALLOC 3 "$Revision$"\r
+.ad\r
+.SH NAME\r
+Malloc, Salloc, Realloc, Srealloc, st_alloc, st_free\ \-\ low level memory allocation routines\r
+.SH SYNOPSIS\r
+.B #include <alloc.h>\r
+.PP\r
+.B char *Malloc(unsigned int size)\r
+.PP\r
+.B char *Salloc(char *str, unsigned int size)\r
+.PP\r
+.B char *Realloc(char *buf, unsigned int size)\r
+.PP\r
+.B char *Srealloc(char *str, unsigned int size)\r
+.PP\r
+.B char *st_alloc(char **phead, unsigned int size, int count)\r
+.PP\r
+.B st_free(char *ptr, char **phead, unsigned int size)\r
+.PP\r
+.B void clear(char *ptr, unsigned int size)\r
+.PP\r
+.void No_Mem()\r
+.PP\r
+.SH DESCRIPTION\r
+This set of routines provides a checking memory allocation mechanism.\r
+.PP\r
+\fIMalloc\fR returns a pointer to a block of at least \fIsize\fR\r
+bytes, beginning on a boundary suitable for any data type.\r
+.PP\r
+\fISalloc\fR returns a pointer to a block of at least \fIsize\fR\r
+bytes, initialized with the null-terminated string \fIstr\fR.\r
+.PP\r
+\fIRealloc\fR changes the size of\r
+the block at \fIbuf\fR to \fIsize\fR bytes, and returns a pointer to the\r
+(possibly moved) block. If \fIbuf\fP is a null pointer, \fIRealloc\fP\r
+behaves as \fIMalloc\fP.\r
+.PP\r
+\fISrealloc\fR reallocates\r
+the string at \fIstr\fR to \fIsize\fR bytes.\r
+It actually does the same as \fIRealloc\fP, and exists only for\r
+backwards compatibility.\r
+.PP\r
+All these routines use \fImalloc\fR and \fIrealloc\fR.\r
+The routine \fIfree\fR can be used on pointers returned by these routines.\r
+.PP\r
+\fISt_alloc\fR and \fIst_free\fR provide a mechanism for maintaining free lists\r
+of structures.\r
+\fISt_alloc\fR takes three parameters: \fIphead\fR is a pointer to a field\r
+containing the head of the free list, \fIsize\fR contains the size of the\r
+structures, and \fIcount\fR indicates how many new structures must be allocated\r
+in case the free list is exhausted.\r
+It returns a pointer to a zero-initialized structure.\r
+\fISt_free\fR also takes three parameters: \fIptr\fR is a pointer to\r
+the structure to be freed, \fIphead\fR is again a pointer to a field\r
+containing the head of the free list, and \fIsize\fR again contains the size\r
+of the structures.\r
+These last two routines are best used in a macro.\r
+.PP\r
+\fIClear\fR clears \fIsize\fR bytes, starting at \fIptr\fR.\r
+.SH FILES\r
+.nf\r
+~em/modules/h/alloc.h\r
+~em/modules/lib/liballoc.a\r
+.fi\r
+.SH "MODULES USED"\r
+system(3)\r
+.SH "SEE ALSO"\r
+malloc(3)\r
+.SH DIAGNOSTICS\r
+\fIMalloc\fR, \fISalloc\fR, \fIRealloc\fP, \fISrealloc\fR, and \fIst_alloc\fR\r
+call a routine \fINo_Mem\fR if there is no memory available. This routine\r
+is not supposed to return. A default one, that\r
+gives an error message and stops execution, is provided.\r
+.SH BUGS\r
+The\r
+.I st_alloc\r
+mechanism only works for structures that are large enough to contain one\r
+pointer.\r
+Also,\r
+.I st_free\r
+actually is a macro, and references its arguments more than once, so they\r
+better not have side-effects.\r
index 0365f75..0946272 100644 (file)
@@ -9,10 +9,7 @@
 
 #include "alloc.h"
 
-void
-botch(ptr, n)
-       register char *ptr;
-       register unsigned int n;
+void botch(register char *ptr, register unsigned int n)
 {
        while (n >= sizeof (long))      {       
                        /* high-speed botch loop */
index 4064223..4cf0c87 100644 (file)
 
 /* instead of Calloc: */
 
-void
-clear(ptr, n)
-       register char *ptr;
-       register unsigned int n;
+void clear(register char *ptr, register unsigned int n)
 {
        register long *q = (long *) ptr;
 
index 704b853..0457420 100644 (file)
 #include <stdlib.h>
 #else
 extern char *malloc();
+#ifndef NULL
+#define NULL 0
+#endif
 #endif
 
 #include       "alloc.h"
 
-char *
-st_alloc(phead, size, count)
-       char **phead;
-       register unsigned int size;
+char *st_alloc(char **phead, register unsigned int size, int count)
 {
-       register char *p;
+       register char *p = NULL;
        register long *q;
        char *retval;
 
@@ -29,7 +29,7 @@ st_alloc(phead, size, count)
                while (count >= 1 && (p = malloc(size * count)) == 0) {
                        count >>= 1;
                }
-               if (p == 0) {
+               if (p == NULL) {
                        No_Mem();
                }
                ((_PALLOC_) p)->_A_next = 0;
index 1628c9f..c66eb8d 100644 (file)
@@ -17,11 +17,7 @@ extern char *malloc();
 
 #include       "alloc.h"
 
-char *
-std_alloc(phead, size, count, pcnt)
-       char **phead;
-       register unsigned int size;
-       int *pcnt;
+char *std_alloc(char **phead, register unsigned int size, int count, int *pcnt)
 {
        register char *p;
        register long *q;