summaryrefslogtreecommitdiff
path: root/sys/src/ape/cmd/pax/mem.c
diff options
context:
space:
mode:
authorTaru Karttunen <taruti@taruti.net>2011-03-30 15:46:40 +0300
committerTaru Karttunen <taruti@taruti.net>2011-03-30 15:46:40 +0300
commite5888a1ffdae813d7575f5fb02275c6bb07e5199 (patch)
treed8d51eac403f07814b9e936eed0c9a79195e2450 /sys/src/ape/cmd/pax/mem.c
Import sources from 2011-03-30 iso image
Diffstat (limited to 'sys/src/ape/cmd/pax/mem.c')
-rwxr-xr-xsys/src/ape/cmd/pax/mem.c138
1 files changed, 138 insertions, 0 deletions
diff --git a/sys/src/ape/cmd/pax/mem.c b/sys/src/ape/cmd/pax/mem.c
new file mode 100755
index 000000000..0eaca9042
--- /dev/null
+++ b/sys/src/ape/cmd/pax/mem.c
@@ -0,0 +1,138 @@
+/* $Source: /u/mark/src/pax/RCS/mem.c,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * mem.c - memory allocation and manipulation functions
+ *
+ * DESCRIPTION
+ *
+ * These routines are provided for higher level handling of the UNIX
+ * memory allocation functions.
+ *
+ * AUTHOR
+ *
+ * Mark H. Colburn, NAPS International (mark@jhereg.mn.org)
+ *
+ *
+ * Sponsored by The USENIX Association for public distribution.
+ *
+ * Copyright (c) 1989 Mark H. Colburn.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted
+ * provided that the above copyright notice is duplicated in all such
+ * forms and that any documentation, advertising materials, and other
+ * materials related to such distribution and use acknowledge that the
+ * software was developed * by Mark H. Colburn and sponsored by The
+ * USENIX Association.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * $Log: mem.c,v $
+ * Revision 1.2 89/02/12 10:04:53 mark
+ * 1.2 release fixes
+ *
+ * Revision 1.1 88/12/23 18:02:17 mark
+ * Initial revision
+ *
+ */
+
+#ifndef lint
+static char *ident = "$Id: mem.c,v 1.2 89/02/12 10:04:53 mark Exp $";
+static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";
+#endif /* ! lint */
+
+
+/* Headers */
+
+#include "pax.h"
+
+
+/* mem_get - allocate memory
+ *
+ * DESCRIPTION
+ *
+ * Mem_get attempts to allocate a block of memory using the malloc
+ * function call. In the event that the memory is not available,
+ * mem_get will display an "Out of memory" message for the user
+ * the first time it encounters the an out of memory situation.
+ * Subsequent calls to mem_get may fail, but no message will be
+ * printed.
+ *
+ * PARAMETERS
+ *
+ * uint len - The amount of memory to allocate
+ *
+ * RETURNS
+ *
+ * Normally returns the pointer to the newly allocated memory. If
+ * an error occurs, NULL is returned, and an error message is
+ * printed.
+ *
+ * ERRORS
+ *
+ * ENOMEM No memory is available
+ */
+
+#ifdef __STDC__
+
+char *mem_get(uint len)
+
+#else
+
+char *mem_get(len)
+uint len; /* amount of memory to get */
+
+#endif
+{
+ char *mem;
+ static short outofmem = 0;
+
+ if ((mem = (char *)malloc(len)) == (char *)NULL && !outofmem) {
+ outofmem++;
+ warn("mem_get()", "Out of memory");
+ }
+ return (mem);
+}
+
+
+/* mem_str - duplicate a string into dynamic memory
+ *
+ * DESCRIPTION
+ *
+ * Mem_str attempts to make a copy of string. It allocates space for
+ * the string, and if the allocation was successfull, copies the old
+ * string into the newly allocated space.
+ *
+ * PARAMETERS
+ *
+ * char *str - string to make a copy of
+ *
+ * RETURNS
+ *
+ * Normally returns a pointer to a new string at least as large
+ * as strlen(str) + 1, which contains a copy of the the data
+ * passed in str, plus a null terminator. Returns (char *)NULL
+ * if enough memory to make a copy of str is not available.
+ */
+
+#ifdef __STDC__
+
+char *mem_str(char *str)
+
+#else
+
+char *mem_str(str)
+char *str; /* string to make a copy of */
+
+#endif
+{
+ char *mem;
+
+ if (mem = mem_get((uint) strlen(str) + 1)) {
+ strcpy(mem, str);
+ }
+ return (mem);
+}