This is self-test.m in view mode; [Download] [Up]
// // self-test.m // LGDCommunicationKit Examples, Release 1.0 (prerelease) // // Copyright (c) 1993, Looking Glass Design, Inc. // All rights reserved. // // Project Manager: Paul Girone // Original Author: Mike Gobbi // Creation Date: June 26, 1993 // $Revision: 1.3 $ // #import <assert.h> #import <errno.h> #import <lgd/commkit/LGDSerialPort.h> #import <pwd.h> #import <libc.h> #import <stdio.h> #import "test_suite.h" static LGDSerialPort *port; void cleanup(void) { printf("\ncleaning up...\n"); if ([port isOpen]) { [port unlockAndClose]; } exit(1); } int main(int argc, char *argv[]) { char *username; char *device = argv[1] ? argv[1] : "cufa"; int signals[] = { SIGINT, SIGQUIT, SIGBUS, SIGSEGV, SIGTERM, 0 }; int i; int count = 0; // display instructions printf("LGDSerialPort self-test (using device %s)\n", device); printf("Press ^C to abort test\n"); printf("\n"); // check uid username = getpwuid(geteuid())->pw_name; if (strcmp(username, "root") && strcmp(username, "uucp")) { printf("WARNING: %s. %s\n", "Not running as root or uucp", "Permission errors are likely"); } // set ourself up to die nicely no matter what happens for (i=0; signals[i]; i++) { signal(signals[i], (void *)cleanup); } // create serial port object port = [[[LGDSerialPort alloc] init] setDevice:device]; if (![port isDeviceAvailable:device]) { printf("device %s is in use (test not started)\n", device); exit(-1); } count += test_locking(port); count += test_connecting(port); [port clearStatus]; if (![port openAndLockDevice:NULL mode:LGD_SP_CBREAK timeout:15] && ![port status]) { printf("open timed out after 15 seconds. Test aborting.\n"); exit(1); } if ([port status]) { printf("unexpected error: %s\n", [port statusString]); exit(-1); } count += test_blocks(port); count += test_strings(port); count += test_characters(port); count += test_flushing(port); count += test_settings(port); count += test_signals(port); [port clearStatus]; [port unlockAndClose]; if ([port status]) { printf("unexpected error: %s\n", [port statusString]); exit(-1); } // free serial port object [port free]; printf("\n%d error%s found overall\n", count, count==1 ? "" : "s"); return count; }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.