@echo od "$<" '>'"$@"
@mkdir -p "`dirname "$@"`"
@{ sym="`echo "$<" | $(symbolname)`"; \
- echo "static const char $${sym}Start[]="; \
- od -vb "$<" | sed 's/[0-7]*/"/;s/ /\\/g;s/$$/"/'; \
+ echo "static const char $${sym}Start[] ="; \
+ od -vb "$<" | sed 's/[0-7]*/"/;s/ *$$/"/;/^""$$/d;s/ */\\/g'; \
echo ';'; \
- echo "static const int $${sym}Size=(int)sizeof($${sym}Start);"; \
+ echo "static const int $${sym}Size ATTR_UNUSED =" \
+ "(int)sizeof($${sym}Start);"; \
} >"$@"
.gif.h:
@echo od "$<" '>'"$@"
@mkdir -p "`dirname "$@"`"
@{ sym="`echo "$<" | $(symbolname)`"; \
- echo "static const char $${sym}Start[]="; \
- od -vb "$<" | sed 's/[0-7]*/"/;s/ /\\/g;s/$$/"/'; \
+ echo "static const char $${sym}Start[] ="; \
+ od -vb "$<" | sed 's/[0-7]*/"/;s/ *$$/"/;/^""$$/d;s/ */\\/g'; \
echo ';'; \
- echo "static const int $${sym}Size=(int)sizeof($${sym}Start);"; \
+ echo "static const int $${sym}Size ATTR_UNUSED =" \
+ "(int)sizeof($${sym}Start);"; \
} >"$@"
.png.h:
@echo od "$<" '>'"$@"
@mkdir -p "`dirname "$@"`"
@{ sym="`echo "$<" | $(symbolname)`"; \
- echo "static const char $${sym}Start[]="; \
- od -vb "$<" | sed 's/[0-7]*/"/;s/ /\\/g;s/$$/"/'; \
+ echo "static const char $${sym}Start[] ="; \
+ od -vb "$<" | sed 's/[0-7]*/"/;s/ *$$/"/;/^""$$/d;s/ */\\/g'; \
echo ';'; \
- echo "static const int $${sym}Size=(int)sizeof($${sym}Start);"; \
+ echo "static const int $${sym}Size ATTR_UNUSED =" \
+ "(int)sizeof($${sym}Start);"; \
} >"$@"
.html.h:
@echo od "$<" '>'"$@"
@mkdir -p "`dirname "$@"`"
@{ sym="`echo "$<" | $(symbolname)`"; \
- echo "static const char $${sym}Start[]="; \
- od -vb "$<" | sed 's/[0-7]*/"/;s/ /\\/g;s/$$/"/'; \
+ echo "static const char $${sym}Start[] ="; \
+ od -vb "$<" | sed 's/[0-7]*/"/;s/ *$$/"/;/^""$$/d;s/ */\\/g'; \
echo ';'; \
- echo "static const int $${sym}Size=(int)sizeof($${sym}Start);"; \
+ echo "static const int $${sym}Size ATTR_UNUSED =" \
+ "(int)sizeof($${sym}Start);"; \
} >"$@"
@echo od "$<" '>'"$@"
@mkdir -p "`dirname "$@"`"
@{ sym="`echo "$<" | $(symbolname)`"; \
- echo "static const char $${sym}Start[]="; \
- od -vb "$<" | sed 's/[0-7]*/"/;s/ /\\/g;s/$$/"/'; \
+ echo "static const char $${sym}Start[] ="; \
+ od -vb "$<" | sed 's/[0-7]*/"/;s/ *$$/"/;/^""$$/d;s/ */\\/g'; \
echo ';'; \
- echo "static const int $${sym}Size=(int)sizeof($${sym}Start);"; \
+ echo "static const int $${sym}Size ATTR_UNUSED =" \
+ "(int)sizeof($${sym}Start);"; \
} >"$@"
.jspp.js:
@echo od "$<" '>'"$@"
@mkdir -p "`dirname "$@"`"
@{ sym="`echo "$<" | $(symbolname)`"; \
- echo "static const char $${sym}Start[]="; \
- od -vb "$<" | sed 's/[0-7]*/"/;s/ /\\/g;s/$$/"/'; \
+ echo "static const char $${sym}Start[] ="; \
+ od -vb "$<" | sed 's/[0-7]*/"/;s/ *$$/"/;/^""$$/d;s/ */\\/g'; \
echo ';'; \
- echo "static const int $${sym}Size=(int)sizeof($${sym}Start);"; \
+ echo "static const int $${sym}Size ATTR_UNUSED =" \
+ "(int)sizeof($${sym}Start);"; \
} >"$@"
@echo od "$<" '>'"$@"
@mkdir -p "`dirname "$@"`"
@{ sym="`echo "$<" | $(symbolname)`"; \
- echo "static const char $${sym}Start[]="; \
- od -vb "$<" | sed 's/[0-7]*/"/;s/ /\\/g;s/$$/"/'; \
+ echo "static const char $${sym}Start[] ="; \
+ od -vb "$<" | sed 's/[0-7]*/"/;s/ *$$/"/;/^""$$/d;s/ */\\/g'; \
echo ';'; \
- echo "static const int $${sym}Size=(int)sizeof($${sym}Start);"; \
+ echo "static const int $${sym}Size ATTR_UNUSED =" \
+ "(int)sizeof($${sym}Start);"; \
} >"$@"
@echo od "$<" '>'"$@"
@mkdir -p "`dirname "$@"`"
@{ sym="`echo "$<" | $(symbolname)`"; \
- echo "static const char $${sym}Start[]="; \
- od -vb "$<" | sed 's/[0-7]*/"/;s/ /\\/g;s/$$/"/'; \
+ echo "static const char $${sym}Start[] ="; \
+ od -vb "$<" | sed 's/[0-7]*/"/;s/ *$$/"/;/^""$$/d;s/ */\\/g'; \
echo ';'; \
- echo "static const int $${sym}Size=(int)sizeof($${sym}Start);"; \
+ echo "static const int $${sym}Size ATTR_UNUSED =" \
+ "(int)sizeof($${sym}Start);"; \
} >"$@"
.gif.h:
@echo od "$<" '>'"$@"
@mkdir -p "`dirname "$@"`"
@{ sym="`echo "$<" | $(symbolname)`"; \
- echo "static const char $${sym}Start[]="; \
- od -vb "$<" | sed 's/[0-7]*/"/;s/ /\\/g;s/$$/"/'; \
+ echo "static const char $${sym}Start[] ="; \
+ od -vb "$<" | sed 's/[0-7]*/"/;s/ *$$/"/;/^""$$/d;s/ */\\/g'; \
echo ';'; \
- echo "static const int $${sym}Size=(int)sizeof($${sym}Start);"; \
+ echo "static const int $${sym}Size ATTR_UNUSED =" \
+ "(int)sizeof($${sym}Start);"; \
} >"$@"
.png.h:
@echo od "$<" '>'"$@"
@mkdir -p "`dirname "$@"`"
@{ sym="`echo "$<" | $(symbolname)`"; \
- echo "static const char $${sym}Start[]="; \
- od -vb "$<" | sed 's/[0-7]*/"/;s/ /\\/g;s/$$/"/'; \
+ echo "static const char $${sym}Start[] ="; \
+ od -vb "$<" | sed 's/[0-7]*/"/;s/ *$$/"/;/^""$$/d;s/ */\\/g'; \
echo ';'; \
- echo "static const int $${sym}Size=(int)sizeof($${sym}Start);"; \
+ echo "static const int $${sym}Size ATTR_UNUSED =" \
+ "(int)sizeof($${sym}Start);"; \
} >"$@"
.html.h:
@echo od "$<" '>'"$@"
@mkdir -p "`dirname "$@"`"
@{ sym="`echo "$<" | $(symbolname)`"; \
- echo "static const char $${sym}Start[]="; \
- od -vb "$<" | sed 's/[0-7]*/"/;s/ /\\/g;s/$$/"/'; \
+ echo "static const char $${sym}Start[] ="; \
+ od -vb "$<" | sed 's/[0-7]*/"/;s/ *$$/"/;/^""$$/d;s/ */\\/g'; \
echo ';'; \
- echo "static const int $${sym}Size=(int)sizeof($${sym}Start);"; \
+ echo "static const int $${sym}Size ATTR_UNUSED =" \
+ "(int)sizeof($${sym}Start);"; \
} >"$@"
.ico.h:
@echo od "$<" '>'"$@"
@mkdir -p "`dirname "$@"`"
@{ sym="`echo "$<" | $(symbolname)`"; \
- echo "static const char $${sym}Start[]="; \
- od -vb "$<" | sed 's/[0-7]*/"/;s/ /\\/g;s/$$/"/'; \
+ echo "static const char $${sym}Start[] ="; \
+ od -vb "$<" | sed 's/[0-7]*/"/;s/ *$$/"/;/^""$$/d;s/ */\\/g'; \
echo ';'; \
- echo "static const int $${sym}Size=(int)sizeof($${sym}Start);"; \
+ echo "static const int $${sym}Size ATTR_UNUSED =" \
+ "(int)sizeof($${sym}Start);"; \
} >"$@"
.jspp.js:
@echo od "$<" '>'"$@"
@mkdir -p "`dirname "$@"`"
@{ sym="`echo "$<" | $(symbolname)`"; \
- echo "static const char $${sym}Start[]="; \
- od -vb "$<" | sed 's/[0-7]*/"/;s/ /\\/g;s/$$/"/'; \
+ echo "static const char $${sym}Start[] ="; \
+ od -vb "$<" | sed 's/[0-7]*/"/;s/ *$$/"/;/^""$$/d;s/ */\\/g'; \
echo ';'; \
- echo "static const int $${sym}Size=(int)sizeof($${sym}Start);"; \
+ echo "static const int $${sym}Size ATTR_UNUSED =" \
+ "(int)sizeof($${sym}Start);"; \
} >"$@"
.wav.h:
@echo od "$<" '>'"$@"
@mkdir -p "`dirname "$@"`"
@{ sym="`echo "$<" | $(symbolname)`"; \
- echo "static const char $${sym}Start[]="; \
- od -vb "$<" | sed 's/[0-7]*/"/;s/ /\\/g;s/$$/"/'; \
+ echo "static const char $${sym}Start[] ="; \
+ od -vb "$<" | sed 's/[0-7]*/"/;s/ *$$/"/;/^""$$/d;s/ */\\/g'; \
echo ';'; \
- echo "static const int $${sym}Size=(int)sizeof($${sym}Start);"; \
+ echo "static const int $${sym}Size ATTR_UNUSED =" \
+ "(int)sizeof($${sym}Start);"; \
} >"$@"
# Tell versions [3.59,3.63) of GNU make to not export all variables.
#define STDC_HEADERS 1
/* Most recent revision number in the version control system */
-#define VCS_REVISION "231"
+#define VCS_REVISION "232"
/* Version number of package */
#define VERSION "2.10"
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-VCS_REVISION=231
+VCS_REVISION=232
cat >>confdefs.h <<_ACEOF
dnl This is the one location where the authoritative version number is stored
AC_INIT(shellinabox, 2.10, markus@shellinabox.com)
-VCS_REVISION=231
+VCS_REVISION=232
AC_SUBST(VCS_REVISION)
AC_DEFINE_UNQUOTED(VCS_REVISION, "${VCS_REVISION}",
[Most recent revision number in the version control system])
};
VT100.prototype.about = function() {
- alert("VT100 Terminal Emulator " + "2.10 (revision 231)" +
+ alert("VT100 Terminal Emulator " + "2.10 (revision 232)" +
"\nCopyright 2008-2010 by Markus Gutschke\n" +
"For more information check http://shellinabox.com");
};
#define misc_conv x_misc_conv
#endif
+// MacOS X has a somewhat unusual definition of getgrouplist() which can
+// trigger a compile warning. Unfortunately, there is no good feature test
+// for this particular problem.
+#if defined(__APPLE__) && defined(__MACH__)
+static int x_getgrouplist(const char *user, gid_t group,
+ gid_t *groups, int *ngroups) {
+ return getgrouplist(user, (int)group, (int *)groups, ngroups);
+}
+#define getgrouplist x_getgrouplist
+#endif
+
static int launcher = -1;
static uid_t restricted;
return uid;
}
-uid_t parseUser(const char *arg, const char **name) {
+uid_t parseUserArg(const char *arg, const char **name) {
char *end;
errno = 0;
unsigned long l = strtoul(arg, &end, 10);
return gid;
}
-gid_t parseGroup(const char *arg, const char **name) {
+gid_t parseGroupArg(const char *arg, const char **name) {
char *end;
errno = 0;
unsigned long l = strtoul(arg, &end, 10);
void dropPrivileges(void);
const char *getUserName(uid_t uid);
uid_t getUserId(const char *name);
-uid_t parseUser(const char *arg, const char **name);
+uid_t parseUserArg(const char *arg, const char **name);
const char *getGroupName(gid_t gid);
gid_t getGroupId(const char *name);
-gid_t parseGroup(const char *arg, const char **name);
+gid_t parseGroupArg(const char *arg, const char **name);
#ifndef HAVE_GETRESUID
int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid);
service->authUser = 0;
// Numeric or symbolic user id
- service->uid = parseUser(arg, &service->user);
+ service->uid = parseUserArg(arg,
+ &service->user);
*ptr = ':';
arg = ptr + 1;
goto error;
}
*ptr = '\000';
- service->gid = parseGroup(arg, &service->group);
+ service->gid = parseGroupArg(arg,
+ &service->group);
}
*ptr = ':';
arg = ptr + 1;
};
ShellInABox.prototype.about = function() {
- alert("Shell In A Box version " + "2.10 (revision 231)" +
+ alert("Shell In A Box version " + "2.10 (revision 232)" +
"\nCopyright 2008-2010 by Markus Gutschke\n" +
"For more information check http://shellinabox.com" +
(typeof serverSupportsSSL != 'undefined' && serverSupportsSSL ?
#include "shellinabox/session.h"
#include "shellinabox/usercss.h"
+#ifdef HAVE_UNUSED
+#defined ATTR_UNUSED __attribute__((unused))
+#defined UNUSED(x) do { } while (0)
+#else
+#define ATTR_UNUSED
+#define UNUSED(x) do { (void)(x); } while (0)
+#endif
+
// Embedded resources
#include "shellinabox/beep.h"
#include "shellinabox/cgi_root.h"
#include "shellinabox/styles.h"
#include "shellinabox/vt100.h"
-#ifdef HAVE_UNUSED
-#defined ATTR_UNUSED __attribute__((unused))
-#defined UNUSED(x) do { } while (0)
-#else
-#define ATTR_UNUSED
-#define UNUSED(x) do { (void)(x); } while (0)
-#endif
-
#define PORTNUM 4200
#define MAX_RESPONSE 2048
if (!optarg || !*optarg) {
fatal("\"--group\" expects a group name.");
}
- runAsGroup = parseGroup(optarg, NULL);
+ runAsGroup = parseGroupArg(optarg, NULL);
} else if (!idx--) {
// Linkify
if (!strcmp(optarg, "none")) {
if (!optarg || !*optarg) {
fatal("\"--user\" expects a user name.");
}
- runAsUser = parseUser(optarg, NULL);
+ runAsUser = parseUserArg(optarg, NULL);
} else if (!idx--) {
// User CSS
if (!optarg || !*optarg) {
};
VT100.prototype.about = function() {
- alert("VT100 Terminal Emulator " + "2.10 (revision 231)" +
+ alert("VT100 Terminal Emulator " + "2.10 (revision 232)" +
"\nCopyright 2008-2010 by Markus Gutschke\n" +
"For more information check http://shellinabox.com");
};