summaryrefslogtreecommitdiff
path: root/source4/lib/appweb/ejs-2.0/mpr/VXWORKS
diff options
context:
space:
mode:
authorDerrell Lipman <derrell@samba.org>2006-09-26 16:58:27 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:20:21 -0500
commit77e8402dd68079c0e245fc8826daf2c6ad334766 (patch)
tree64f65c7d3fb7f3aa970311f70e3f8bae4c0fc40c /source4/lib/appweb/ejs-2.0/mpr/VXWORKS
parent06de0f0b743056ba845de000339d4c3beb7cb845 (diff)
downloadsamba-77e8402dd68079c0e245fc8826daf2c6ad334766.tar.gz
samba-77e8402dd68079c0e245fc8826daf2c6ad334766.tar.bz2
samba-77e8402dd68079c0e245fc8826daf2c6ad334766.zip
r18925: Add current snapshot of the ejs-2.0 code. Tridge, will you be incorporating this?
(This used to be commit 917af234a8d517f82bd42256a940608a16b988f4)
Diffstat (limited to 'source4/lib/appweb/ejs-2.0/mpr/VXWORKS')
-rw-r--r--source4/lib/appweb/ejs-2.0/mpr/VXWORKS/Makefile16
-rw-r--r--source4/lib/appweb/ejs-2.0/mpr/VXWORKS/mprFile.c85
-rw-r--r--source4/lib/appweb/ejs-2.0/mpr/VXWORKS/mprPlatform.c191
-rwxr-xr-xsource4/lib/appweb/ejs-2.0/mpr/VXWORKS/mprTime.c163
4 files changed, 455 insertions, 0 deletions
diff --git a/source4/lib/appweb/ejs-2.0/mpr/VXWORKS/Makefile b/source4/lib/appweb/ejs-2.0/mpr/VXWORKS/Makefile
new file mode 100644
index 0000000000..f3a2394b6e
--- /dev/null
+++ b/source4/lib/appweb/ejs-2.0/mpr/VXWORKS/Makefile
@@ -0,0 +1,16 @@
+#
+# Makefile for the Mbedthis Portable Runtime (MPR) library for VXWORKS
+#
+# Copyright (c) Mbedthis Software LLC, 2003-2006. All Rights Reserved.
+#
+
+COMPILE := *.c
+EXPORT_OBJECTS := yes
+MAKE_IFLAGS := -I..
+
+include make.dep
+
+## Local variables:
+## tab-width: 4
+## End:
+## vim: tw=78 sw=4 ts=4
diff --git a/source4/lib/appweb/ejs-2.0/mpr/VXWORKS/mprFile.c b/source4/lib/appweb/ejs-2.0/mpr/VXWORKS/mprFile.c
new file mode 100644
index 0000000000..ae0b523faa
--- /dev/null
+++ b/source4/lib/appweb/ejs-2.0/mpr/VXWORKS/mprFile.c
@@ -0,0 +1,85 @@
+/**
+ * @file mprUnixFile.c
+ * @brief File services for Unix
+ * @overview
+ * @remarks
+ */
+
+/******************************************************************************/
+/*
+ * @copy default
+ *
+ * Copyright (c) Mbedthis Software LLC, 2003-2006. All Rights Reserved.
+ *
+ * This software is distributed under commercial and open source licenses.
+ * You may use the GPL open source license described below or you may acquire
+ * a commercial license from Mbedthis Software. You agree to be fully bound
+ * by the terms of either license. Consult the LICENSE.TXT distributed with
+ * this software for full details.
+ *
+ * This software is open source; 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. See the GNU General Public License for more
+ * details at: http://www.mbedthis.com/downloads/gplLicense.html
+ *
+ * This program is distributed WITHOUT ANY WARRANTY; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * This GPL license does NOT permit incorporating this software into
+ * proprietary programs. If you are unable to comply with the GPL, you must
+ * acquire a commercial license to use this software. Commercial licenses
+ * for this software and support services are available from Mbedthis
+ * Software at http://www.mbedthis.com
+ *
+ * @end
+ */
+
+/********************************** Includes **********************************/
+
+#include "mpr.h"
+
+/************************************ Code ************************************/
+
+int mprGetFileInfo(MprCtx ctx, const char *path, MprFileInfo *info)
+{
+ struct stat s;
+
+ mprAssert(path);
+ mprAssert(info);
+
+ if (stat(path, &s) < 0) {
+ return -1;
+ }
+
+ info->size = s.st_size;
+ info->ctime = s.st_ctime;
+ info->mtime = s.st_mtime;
+ info->inode = s.st_ino;
+ info->isDir = (s.st_mode & S_IFDIR) != 0;
+ info->isReg = (s.st_mode & S_IFREG) != 0;
+
+ if (strcmp(path, "/dev/null") == 0) {
+ info->isReg = 0;
+ }
+
+ return 0;
+}
+
+/******************************************************************************/
+
+int mprMakeDir(MprCtx ctx, const char *path, int perms)
+{
+ return mkdir(path, perms);
+}
+
+/******************************************************************************/
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * End:
+ * vim:tw=78
+ * vim600: sw=4 ts=4 fdm=marker
+ * vim<600: sw=4 ts=4
+ */
diff --git a/source4/lib/appweb/ejs-2.0/mpr/VXWORKS/mprPlatform.c b/source4/lib/appweb/ejs-2.0/mpr/VXWORKS/mprPlatform.c
new file mode 100644
index 0000000000..29258dfe1c
--- /dev/null
+++ b/source4/lib/appweb/ejs-2.0/mpr/VXWORKS/mprPlatform.c
@@ -0,0 +1,191 @@
+/**
+ * @file mprPlatform.c
+ * @brief Cross platform routines
+ * @overview This module provides low level cross platform routines.
+ * @remarks Most routines in this file are not thread-safe. It is the callers
+ * responsibility to perform all thread synchronization.
+ */
+
+/*
+ * @copy default
+ *
+ * Copyright (c) Mbedthis Software LLC, 2003-2006. All Rights Reserved.
+ *
+ * This software is distributed under commercial and open source licenses.
+ * You may use the GPL open source license described below or you may acquire
+ * a commercial license from Mbedthis Software. You agree to be fully bound
+ * by the terms of either license. Consult the LICENSE.TXT distributed with
+ * this software for full details.
+ *
+ * This software is open source; 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. See the GNU General Public License for more
+ * details at: http://www.mbedthis.com/downloads/gplLicense.html
+ *
+ * This program is distributed WITHOUT ANY WARRANTY; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * This GPL license does NOT permit incorporating this software into
+ * proprietary programs. If you are unable to comply with the GPL, you must
+ * acquire a commercial license to use this software. Commercial licenses
+ * for this software and support services are available from Mbedthis
+ * Software at http://www.mbedthis.com
+ *
+ * @end
+ */
+
+/********************************** Includes **********************************/
+/*
+ * We need to use the underlying str(cpy) routines to implement our safe
+ * alternatives
+ */
+#if !DOXYGEN
+#define UNSAFE_FUNCTIONS_OK 1
+#endif
+
+#include "mpr.h"
+
+/************************************ Code ************************************/
+
+char *mprInetToStr(char *buffer, int bufsize, const struct in_addr in)
+{
+#if HAVE_NTOA_R
+ inet_ntoa_r(in, buffer, bufsize);
+#else
+ uchar *cp;
+ /* FUTURE -- this is not portable */
+ cp = (uchar*) &in;
+ mprSprintf(buffer, bufsize, "%d.%d.%d.%d", cp[0], cp[1], cp[2], cp[3]);
+#endif
+ return buffer;
+}
+
+/******************************************************************************/
+
+void mprSetShell(MprCtx ctx, void *shell)
+{
+}
+
+/******************************************************************************/
+
+void *mprGetShell(MprCtx ctx)
+{
+ return 0;
+}
+
+/******************************************************************************/
+/*
+ * Sleep. Period given in milliseconds.
+ */
+
+void mprSleep(MprCtx ctx, int milliseconds)
+{
+ struct timeval timeout;
+ int rc;
+
+ timeout.tv_sec = milliseconds / 1000;
+ timeout.tv_usec = (milliseconds % 1000) * 1000;
+ do {
+ rc = select(1, 0, 0, 0, &timeout);
+ } while (rc < 0 && errno == EINTR);
+}
+
+/******************************************************************************/
+/*
+ * Make intervening directories
+ */
+
+int mprMakeDirPath(MprCtx ctx, const char *path)
+{
+ char dir[MPR_MAX_PATH], buf[MPR_MAX_PATH];
+ char *dirSep;
+ char *next, *tok;
+
+ dir[0] = '\0';
+ dirSep = "/\\";
+
+ if (path == 0 || *path == '\0') {
+ return MPR_ERR_BAD_ARGS;
+ }
+
+ mprStrcpy(buf, sizeof(buf), path);
+ next = mprStrTok(buf, dirSep, &tok);
+ if (*buf == '/') {
+ dir[0] = '/';
+ }
+ while (next != NULL) {
+ if (strcmp(next, ".") == 0 ) {
+ next = mprStrTok(NULL, dirSep, &tok);
+ continue;
+ }
+ strcat(dir, next);
+ if (access(dir, R_OK) != 0) {
+ if (mkdir(dir) < 0) {
+ return MPR_ERR_CANT_CREATE;
+ }
+ }
+ strcat(dir, "/");
+ next = mprStrTok(NULL, dirSep, &tok);
+ }
+ return 0;
+}
+
+/******************************************************************************/
+/*
+ * Get a fully qualified file name for the given path. Return with forward
+ * slashes always
+ */
+
+char *mprGetFullPathName(char *buf, int buflen, const char *path)
+{
+ if (mprStrcpy(buf, buflen, path) < 0) {
+ mprAssert(0);
+ return 0;
+ }
+ return buf;
+}
+
+/******************************************************************************/
+/*
+ * Replacement for gethostbyname that is multi-thread safe
+ */
+
+struct hostent *mprGetHostByName(MprCtx ctx, const char *name)
+{
+ struct hostent *hp;
+
+ hp = (struct hostent*) mprAlloc(ctx, sizeof(struct hostent));
+ memset(hp, 0, sizeof(struct hostent));
+
+ struct in_addr inaddr;
+ inaddr.s_addr = (ulong) hostGetByName(name);
+ if (inaddr.s_addr < 0) {
+ mprAssert(0);
+ return 0;
+ }
+ hp->h_addrtype = AF_INET;
+ hp->h_length = sizeof(int);
+ hp->h_name = mprStrdup(name);
+ hp->h_addr_list = 0;
+ hp->h_aliases = 0;
+
+ hp->h_addr_list = new char*[2];
+ hp->h_addr_list[0] = (char *) mprAlloc(hp, sizeof(struct in_addr));
+ memcpy(&hp->h_addr_list[0], &inaddr, hp->h_length);
+ hp->h_addr_list[1] = 0;
+
+ return hp;
+}
+
+/******************************************************************************/
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * End:
+ * vim:tw=78
+ * vim600: sw=4 ts=4 fdm=marker
+ * vim<600: sw=4 ts=4
+ */
diff --git a/source4/lib/appweb/ejs-2.0/mpr/VXWORKS/mprTime.c b/source4/lib/appweb/ejs-2.0/mpr/VXWORKS/mprTime.c
new file mode 100755
index 0000000000..c9b7560f46
--- /dev/null
+++ b/source4/lib/appweb/ejs-2.0/mpr/VXWORKS/mprTime.c
@@ -0,0 +1,163 @@
+/**
+ * @file mprTime.c
+ * @brief Time handling for VxWorks
+ * @overview
+ */
+
+/*
+ * @copy default
+ *
+ * Copyright (c) Mbedthis Software LLC, 2003-2006. All Rights Reserved.
+ *
+ * This software is distributed under commercial and open source licenses.
+ * You may use the GPL open source license described below or you may acquire
+ * a commercial license from Mbedthis Software. You agree to be fully bound
+ * by the terms of either license. Consult the LICENSE.TXT distributed with
+ * this software for full details.
+ *
+ * This software is open source; 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. See the GNU General Public License for more
+ * details at: http://www.mbedthis.com/downloads/gplLicense.html
+ *
+ * This program is distributed WITHOUT ANY WARRANTY; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * This GPL license does NOT permit incorporating this software into
+ * proprietary programs. If you are unable to comply with the GPL, you must
+ * acquire a commercial license to use this software. Commercial licenses
+ * for this software and support services are available from Mbedthis
+ * Software at http://www.mbedthis.com
+ *
+ * @end
+ */
+
+/********************************* Includes ***********************************/
+
+#include "mpr.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#undef localtime
+#undef localtime_r
+#undef gmtime
+#undef gmtime_r
+#undef ctime
+#undef ctime_r
+#undef asctime
+#undef asctime_r
+
+/******************************************************************************/
+/*
+ * Returns time in seconds and milliseconds. This is NOT time-of-day.
+ */
+
+MprTime *mprGetTime(MprCtx ctx, MprTime *tp)
+{
+ struct timeval tv;
+
+ if (gettimeofday(&tv, 0) < 0) {
+ mprAssert(0);
+ tp->sec = 0;
+ tp->msec = 0;
+ return tp;
+ }
+ tp->sec = tv.tv_sec;
+ tp->msec = tv.tv_usec / 1000;
+ return tp;
+}
+
+/******************************************************************************/
+/*
+ * Thread-safe wrapping of localtime
+ */
+
+struct tm *mprLocaltime(MprCtx ctx, struct tm *timep, time_t *now)
+{
+ localtime_r(now, timep);
+
+ return timep;
+}
+
+/******************************************************************************/
+/*
+ * Thread-safe wrapping of gmtime
+ */
+
+struct tm *mprGmtime(MprCtx ctx, time_t *now, struct tm *timep)
+{
+ gmtime_r(now, timep);
+
+ return timep;
+}
+
+/******************************************************************************/
+/*
+ * Thread-safe wrapping of ctime
+ */
+
+int mprCtime(MprCtx ctx, char *buf, int bufsize, const time_t *timer)
+{
+ char localBuf[80];
+ char *cp;
+ int len;
+
+ mprAssert(buf);
+
+ mprGlobalLock(ctx);
+
+ cp = ctime_r(timer, localBuf);
+ if ((int) strlen(cp) >= bufsize) {
+ mprStrcpy(buf, bufsize, "WONT FIT");
+ mprAssert(0);
+ return MPR_ERR_WONT_FIT;
+ }
+ len = mprStrcpy(buf, bufsize, cp);
+
+ if (buf[len - 1] == '\n') {
+ buf[len - 1] = '\0';
+ }
+
+ mprGlobalUnlock(ctx);
+
+ return 0;
+}
+
+/******************************************************************************/
+/*
+ * Thread-safe wrapping of asctime
+ */
+
+int mprAsctime(MprCtx ctx, char *buf, int bufsize, const struct tm *timeptr)
+{
+ char *cp;
+ char localBuf[80];
+
+ cp = asctime_r(timeptr, localBuf);
+ if ((int) strlen(cp) >= bufsize) {
+ mprAssert(0);
+ return MPR_ERR_WONT_FIT;
+ }
+ mprStrcpy(buf, bufsize, cp);
+
+ return strlen(buf);
+}
+
+/******************************************************************************/
+
+#ifdef __cplusplus
+}
+#endif
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * End:
+ * vim:tw=78
+ * vim600: sw=4 ts=4 fdm=marker
+ * vim<600: sw=4 ts=4
+ */