summaryrefslogtreecommitdiff
path: root/misc/pascal
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2008-01-05 13:39:57 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2008-01-05 13:39:57 +0000
commitea5a4459fed6183b40b3d8902c09911f6ee78eb4 (patch)
treede9c0bc18998e469af250bb67e745344d4393c5e /misc/pascal
parent15c5db8e173651f7e0375d3b6e23ee089681448e (diff)
downloadnuttx-ea5a4459fed6183b40b3d8902c09911f6ee78eb4.tar.gz
nuttx-ea5a4459fed6183b40b3d8902c09911f6ee78eb4.tar.bz2
nuttx-ea5a4459fed6183b40b3d8902c09911f6ee78eb4.zip
Common logic
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@490 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'misc/pascal')
-rw-r--r--misc/pascal/libpas/Makefile67
-rw-r--r--misc/pascal/libpas/pextension.c132
-rw-r--r--misc/pascal/libpas/psignextend16.c58
3 files changed, 257 insertions, 0 deletions
diff --git a/misc/pascal/libpas/Makefile b/misc/pascal/libpas/Makefile
new file mode 100644
index 000000000..047a47a13
--- /dev/null
+++ b/misc/pascal/libpas/Makefile
@@ -0,0 +1,67 @@
+############################################################################
+# libpas/Makefile
+#
+# Copyright (C) 2008 Gregory Nutt. All rights reserved.
+# Author: Gregory Nutt <spudmonkey@racsa.co.cr>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in
+# the documentation and/or other materials provided with the
+# distribution.
+# 3. Neither the name NuttX nor the names of its contributors may be
+# used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+############################################################################
+#
+# Directories
+#
+LIBPASDIR = ${shell pwd}
+PASCAL = $(LIBPASDIR)/..
+
+include $(PASCAL)/Make.config
+include $(PASCAL)/Make.defs
+
+INCDIR = $(PASCAL)/include
+LIBDIR = $(PASCAL)/lib
+
+#
+# Objects and targets
+#
+LIBPASSRCS = pextension.c psignextend16.c
+LIBPASOBJS = $(LIBPASSRCS:.c=.o)
+
+OBJS = $(LIBPASOBJS)
+
+all: libpas.a
+.PHONY: all libpas.a clean
+
+$(OBJS): %.o: %.c
+ $(CC) -c $(CFLAGS) $< -o $@
+
+$(LIBDIR)/libpas.a: $(LIBPASOBJS)
+ $(AR) $(ARFLAGS) $@ $^
+
+libpas.a: $(LIBDIR)/libpas.a
+
+clean:
+ $(RM) libpas.a *.o core *~
diff --git a/misc/pascal/libpas/pextension.c b/misc/pascal/libpas/pextension.c
new file mode 100644
index 000000000..59f64f45f
--- /dev/null
+++ b/misc/pascal/libpas/pextension.c
@@ -0,0 +1,132 @@
+/**********************************************************************
+ * pextension.c
+ * Manage file extensions
+ *
+ * Copyright (C) 2008 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ * used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ **********************************************************************/
+
+/**********************************************************************
+ * Included Files
+ **********************************************************************/
+
+#include <string.h>
+
+#include "keywords.h"
+#include "pdefs.h"
+#include "paslib.h"
+
+/***********************************************************************/
+
+boolean extension(const char *inName, const char *ext, char *outName,
+ boolean force_default)
+{
+ int namelen = strlen(inName);
+ int extlen;
+ int copylen;
+ char *lastdot;
+
+ /* Find the position of the last occurrence of '.' in inName */
+
+ lastdot = strrchr(inName, '.');
+
+ /* If a file extension is in the input line and no default is forced, then
+ * copy the rest of the input line
+ */
+
+ if ((lastdot != NULL) && (!force_default))
+ {
+ /* Make sure that the string (with its null terminator) will fit in
+ * the allocated buffer.
+ */
+
+ if ((namelen + 1) > FNAME_SIZE)
+ {
+ /* It won't */
+
+ return TRUE;
+ }
+ else
+ {
+ /* Copy the string. */
+
+ strcpy(outName, inName);
+ }
+ }
+ else
+ {
+ /* The name has no extension or we must replace the extension. */
+
+ extlen = strlen(ext) + 1; /* extension + null terminator */
+
+ if (lastdot != NULL)
+ {
+ /* It has an extension. We must copy everything except the
+ * last dot and the following extension.
+ */
+
+ copylen = namelen - strlen(lastdot); /* name - . - terminator */
+ }
+ else
+ {
+ /* It has no extension. We must copy everything */
+
+ copylen = namelen + 1; /* whole name with null termination */
+ }
+
+ /* Make sure that the string (with its null terminator) will fit in
+ * the allocated buffer.
+ */
+
+ if ((copylen + extlen + 1) > FNAME_SIZE)
+ {
+ /* It won't */
+
+ return TRUE;
+ }
+ else
+ {
+ /* It will Copy file name up to, but excluding, the '.' */
+
+ memcpy(outName, inName, copylen);
+
+ /* Then copy the extension */
+
+ outName[copylen] = '.';
+ memcpy(&outName[copylen+1], ext, extlen);
+ }
+ }
+
+ return FALSE;
+
+} /* end extension */
+
+/***********************************************************************/
diff --git a/misc/pascal/libpas/psignextend16.c b/misc/pascal/libpas/psignextend16.c
new file mode 100644
index 000000000..a89737d2c
--- /dev/null
+++ b/misc/pascal/libpas/psignextend16.c
@@ -0,0 +1,58 @@
+/**********************************************************************
+ * psignextend16.c
+ * 16-bit sign extension
+ *
+ * Copyright (C) 2008 Gregory Nutt. All rights reserved.
+ * Author: Gregory Nutt <spudmonkey@racsa.co.cr>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ * used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ **********************************************************************/
+
+/**********************************************************************
+ * Included Files
+ **********************************************************************/
+
+#include <string.h>
+
+#include "keywords.h"
+#include "pdefs.h"
+#include "paslib.h"
+
+/***********************************************************************/
+/* This function converts a signed 16-bit value represented as a uint16
+ * to a sint32.
+ */
+
+sint32 signExtend16(uint16 arg16)
+{
+ sint32 arg32 = arg16 << 16;
+ return arg32 >> 16;
+}
+
+/***********************************************************************/