|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. ! 3: * ! 4: * @APPLE_LICENSE_HEADER_START@ ! 5: * ! 6: * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights ! 7: * Reserved. This file contains Original Code and/or Modifications of ! 8: * Original Code as defined in and that are subject to the Apple Public ! 9: * Source License Version 1.1 (the "License"). You may not use this file ! 10: * except in compliance with the License. Please obtain a copy of the ! 11: * License at http://www.apple.com/publicsource and read it before using ! 12: * this file. ! 13: * ! 14: * The Original Code and all software distributed under the License are ! 15: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER ! 16: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, ! 17: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, ! 18: * FITNESS FOR A PARTICULAR PURPOSE OR NON- INFRINGEMENT. Please see the ! 19: * License for the specific language governing rights and limitations ! 20: * under the License. ! 21: * ! 22: * @APPLE_LICENSE_HEADER_END@ ! 23: */ ! 24: /* @(#)lfs.c 2.0 26/06/90 (c) 1990 NeXT */ ! 25: ! 26: /* ! 27: * smsg.c -- Send simple message to arbitrary server. ! 28: * ! 29: * HISTORY ! 30: * 23-Jun-91 Doug Mitchell at NeXT ! 31: * Clones from lfs.c. ! 32: */ ! 33: ! 34: #import <sys/types.h> ! 35: #import <mach/mach.h> ! 36: #import <mach/mach_error.h> ! 37: #import <ansi/stdlib.h> ! 38: #import <bsd/libc.h> ! 39: #import <mach/port.h> ! 40: #import <servers/netname.h> ! 41: ! 42: extern void usage(char **argv); ! 43: ! 44: int main(int argc, char **argv) ! 45: { ! 46: kern_return_t krtn; ! 47: int arg; ! 48: char *hostname = ""; ! 49: port_t fs_port, local_port; ! 50: msg_header_t msg; ! 51: ! 52: if(argc < 3) ! 53: usage(argv); ! 54: for(arg=3; arg<argc; arg++) { ! 55: switch(argv[arg][0]) { ! 56: case 'h': ! 57: hostname = &argv[arg][2]; ! 58: break; ! 59: default: ! 60: usage(argv); ! 61: } ! 62: } ! 63: krtn = port_allocate(task_self(), &local_port); ! 64: if(krtn) { ! 65: mach_error("port_allocate", krtn); ! 66: exit(1); ! 67: } ! 68: krtn = netname_look_up(name_server_port, hostname, argv[1], &fs_port); ! 69: if(krtn) { ! 70: mach_error("netname_look_up", krtn); ! 71: exit(1); ! 72: } ! 73: ! 74: /* ! 75: * Cook up a basic message. ! 76: */ ! 77: msg.msg_id = atoi(argv[2]); ! 78: msg.msg_size = sizeof(msg_header_t); ! 79: msg.msg_local_port = local_port; ! 80: msg.msg_remote_port = fs_port; ! 81: krtn = msg_rpc(&msg, ! 82: MSG_OPTION_NONE, ! 83: msg.msg_size, ! 84: 0, /* send_timeout */ ! 85: 0); /* rcv_timeout */ ! 86: if(krtn) { ! 87: mach_error("msg_rpc", krtn); ! 88: exit(1); ! 89: } ! 90: printf("...OK\n"); ! 91: exit(0); ! 92: } ! 93: ! 94: void usage(char **argv) ! 95: { ! 96: printf("usage: %s server_name msg_id [h=hostname]\n", argv[0]); ! 97: exit(1); ! 98: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.