Suite/P Toolkit: Available Implementations

Last revised: 17Mar2004 GLG

Table of Contents

Introduction

This document describes all the concrete Suitelet implementations provided in the Suite/P Toolkit for Java.

All necessary JARs and JNI-libraries are provided in compiled ready-to-use form. You need not compile anything in order to use any of these concrete Suitelet imps on any supported platform.

The source for all imps is provided, though some imps may not be recompileable on some platforms unless you obtain additional classes to compile against. The C source for the JNI-based imps was compiled using ProjectBuilder on Mac OS X, and that is the recommended way to recompile it.

If you haven't already read the overview, you should.

Compatibility

All the Java code will compile on JDK 1.2 or higher. It should mostly compile on JDK 1.1, but a few methods might not.

Plain Java Implementations

All plain-Java implementations are necessarily fakes. If plain Java alone could provide the desired capability, then there wouldn't need to be a Suitelet implementation to provide it.

glguerin.suitep.imp.un.UnSuite
Provides the following PosixSuites capabilities:
  • GROUPID_REAL
  • GROUPID_EFFECTIVE
  • GROUPID_SAVED
  • GROUPID_LOOKUP
  • GROUPID_MUTATER
  • PROCESS_ID
  • PROCESS_ID_PARENT
  • USERID_REAL
  • USERID_EFFECTIVE
  • USERID_SAVED
  • USERID_LOOKUP
  • USERID_MUTATER
  • USERID_SUPERPOWERS

Mac OS X Implementations

The Mac OS X implementation uses JNI for native code and requires Mac OS X 10.0 or higher.

The provided implementation has been tested on the following Mac OS X versions:
    10.0, 10.1, 10.2.1, 10.2.3, 10.2.6, 10.3.2
On each OS version tested, it works under the Apple-supplied versions of J2SE 1.3 or 1.4 that may be available for that OS version.

This implementation works under J2SE 1.3 or 1.4, but you must ensure that the JNI-lib will be loaded. The simplest way to do this is to put the JNI-lib file in the same place as "SuiteP.jar". Whether this is in Contents/Resources/Java within an app-bundle, or in a Java extensions location, or in a signed ZIP-file for a JNLP deployment, or someplace else, this is a good overall strategy even if you have to override the default "java.library.path" in order to make things work.

glguerin.suitep.imp.macosx.XSuite
Provides the following PosixSuites capabilities, implemented using the C function described in the parenthesized man-section number:
  • ENV_SUITE -- getenv(3), UTF-8 env-value text-encoding
  • GROUPID_REAL -- getgid(2)
  • GROUPID_EFFECTIVE -- getegid(2)
  • GROUPID_SAVED -- see: setuid(2), execve(2), and 'man 2 intro'
  • GROUPID_LOOKUP -- getgrent(3), et al.
  • GROUPID_MUTATER -- setgid(2), setegid(2)
  • LIMIT_COREDUMP -- getrlimit(2), setrlimit(2)
  • LIMIT_CPU -- getrlimit(2), setrlimit(2)
  • LIMIT_DATA -- getrlimit(2), setrlimit(2)
  • LIMIT_DESCRIPTOR -- getrlimit(2), setrlimit(2)
  • LIMIT_FILESIZE -- getrlimit(2), setrlimit(2)
  • LIMIT_MEMLOCK -- getrlimit(2), setrlimit(2)
  • LIMIT_PROCESS -- getrlimit(2), setrlimit(2)
  • LIMIT_RSS -- getrlimit(2), setrlimit(2)
  • LIMIT_STACK -- getrlimit(2), setrlimit(2)
  • LIMIT_** + HARD -- getrlimit(2), setrlimit(2)
  • PROCESS_ID -- getpid(2)
  • PROCESS_ID_PARENT -- getppid(2)
  • PROCESS_GROUP -- getpgrp(2)
  • PROCESS_NICE -- getpriority(2), setpriority(2)
  • PROCESS_UMASK -- umask(2)
  • PROCESS_PROCESSING -- getpgrp(2), setpgid(2)
  • PROCESS_SIGNALLER -- kill(2) and 'cat /usr/include/sys/signal.h'
  • PROCESS_SIGNALRECEIVER -- sigaction(2) and 'cat /usr/include/sys/signal.h'
  • USERID_REAL -- getuid(2)
  • USERID_EFFECTIVE -- geteuid(2)
  • USERID_SAVED -- see: setuid(2), execve(2), and 'man 2 intro'
  • USERID_LOOKUP -- getpwent(3), et al.
  • USERID_MUTATER -- setuid(2), seteuid(2)
  • USERID_SUPERPOWERS -- no corresponding C function
  • HW_BUS_FREQ -- sysctl(2)
  • HW_BYTEORDER -- sysctl(2)
  • HW_CPU_FREQ -- sysctl(2)
  • HW_MACHINE -- sysctl(2)
  • HW_MODEL -- sysctl(2)
  • HW_NCPU -- sysctl(2)
  • HW_PHYSMEM -- sysctl(2)
  • HW_USERMEM -- sysctl(2)
  • HW_VECTORUNIT -- sysctl(2)
  • KERN_ARGMAX -- sysctl(2)
  • KERN_HOSTNAME -- sysctl(2)
  • KERN_MAXFILES -- sysctl(2)
  • KERN_MAXPROC -- sysctl(2)
  • KERN_MAXVNODES -- sysctl(2)
  • KERN_OSRELEASE -- sysctl(2)
  • KERN_OSREV -- sysctl(2)
  • KERN_OSTYPE -- sysctl(2)
  • KERN_POSIX1 -- sysctl(2)
  • KERN_SECURELVL -- sysctl(2)
  • USER_CS_PATH -- sysctl(2)
  • USER_POSIX2_VERSION -- sysctl(2)


To Greg's Home Page
To Greg's Software Page