17c478bd9Sstevel@tonic-gate /* 27c478bd9Sstevel@tonic-gate * CDDL HEADER START 37c478bd9Sstevel@tonic-gate * 47c478bd9Sstevel@tonic-gate * The contents of this file are subject to the terms of the 5d2d5cf7cSAli Bahrami * Common Development and Distribution License (the "License"). 6d2d5cf7cSAli Bahrami * You may not use this file except in compliance with the License. 77c478bd9Sstevel@tonic-gate * 87c478bd9Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 97c478bd9Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing. 107c478bd9Sstevel@tonic-gate * See the License for the specific language governing permissions 117c478bd9Sstevel@tonic-gate * and limitations under the License. 127c478bd9Sstevel@tonic-gate * 137c478bd9Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each 147c478bd9Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 157c478bd9Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the 167c478bd9Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying 177c478bd9Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner] 187c478bd9Sstevel@tonic-gate * 197c478bd9Sstevel@tonic-gate * CDDL HEADER END 207c478bd9Sstevel@tonic-gate */ 217c478bd9Sstevel@tonic-gate /* Copyright (c) 1988 AT&T */ 227c478bd9Sstevel@tonic-gate /* All Rights Reserved */ 237c478bd9Sstevel@tonic-gate 247c478bd9Sstevel@tonic-gate /* 25*ba7866cdSAli Bahrami * Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved. 267c478bd9Sstevel@tonic-gate */ 277c478bd9Sstevel@tonic-gate 287c478bd9Sstevel@tonic-gate #include "inc.h" 29*ba7866cdSAli Bahrami #include "conv.h" 307c478bd9Sstevel@tonic-gate 317c478bd9Sstevel@tonic-gate /* 32*ba7866cdSAli Bahrami * Forward declarations 337c478bd9Sstevel@tonic-gate */ 347c478bd9Sstevel@tonic-gate static void setup(int, char **, Cmd_info *); 35*ba7866cdSAli Bahrami static void setcom(Cmd_info *, Cmd_func); 36d6555420Smike_s static void usage(void); 37d6555420Smike_s static void sigexit(int sig); 387c478bd9Sstevel@tonic-gate static int notfound(Cmd_info *); 397c478bd9Sstevel@tonic-gate static void check_swap(); 407c478bd9Sstevel@tonic-gate 41*ba7866cdSAli Bahrami const char * 42*ba7866cdSAli Bahrami _ar_msg(Msg mid) 43*ba7866cdSAli Bahrami { 44*ba7866cdSAli Bahrami return (gettext(MSG_ORIG(mid))); 45*ba7866cdSAli Bahrami } 46*ba7866cdSAli Bahrami 47*ba7866cdSAli Bahrami 48*ba7866cdSAli Bahrami void 49*ba7866cdSAli Bahrami establish_sighandler(void (*handler)()) 50*ba7866cdSAli Bahrami { 51*ba7866cdSAli Bahrami static const int signum[] = {SIGHUP, SIGINT, SIGQUIT, 0}; 52*ba7866cdSAli Bahrami int i; 53*ba7866cdSAli Bahrami 54*ba7866cdSAli Bahrami if (handler == SIG_IGN) { 55*ba7866cdSAli Bahrami /* Ignore all the specified signals */ 56*ba7866cdSAli Bahrami for (i = 0; signum[i]; i++) 57*ba7866cdSAli Bahrami (void) signal(signum[i], SIG_IGN); 58*ba7866cdSAli Bahrami 59*ba7866cdSAli Bahrami } else { 60*ba7866cdSAli Bahrami /* 61*ba7866cdSAli Bahrami * Set any signal that doesn't default to being ignored 62*ba7866cdSAli Bahrami * to our signal handler. 63*ba7866cdSAli Bahrami */ 64*ba7866cdSAli Bahrami for (i = 0; signum[i]; i++) 65*ba7866cdSAli Bahrami if (signal(signum[i], SIG_IGN) != SIG_IGN) 66*ba7866cdSAli Bahrami (void) signal(signum[i], handler); 67*ba7866cdSAli Bahrami } 68*ba7866cdSAli Bahrami } 697c478bd9Sstevel@tonic-gate 707c478bd9Sstevel@tonic-gate int 71*ba7866cdSAli Bahrami main(int argc, char **argv, char *envp[]) 727c478bd9Sstevel@tonic-gate { 737c478bd9Sstevel@tonic-gate int fd; 747c478bd9Sstevel@tonic-gate Cmd_info *cmd_info; 757c478bd9Sstevel@tonic-gate int ret; 767c478bd9Sstevel@tonic-gate char *new = NULL; 777c478bd9Sstevel@tonic-gate 78*ba7866cdSAli Bahrami #ifndef XPG4 79*ba7866cdSAli Bahrami /* 80*ba7866cdSAli Bahrami * Check for a binary that better fits this architecture. 81*ba7866cdSAli Bahrami */ 82*ba7866cdSAli Bahrami (void) conv_check_native(argv, envp); 837c478bd9Sstevel@tonic-gate #endif 847c478bd9Sstevel@tonic-gate 85*ba7866cdSAli Bahrami /* 86*ba7866cdSAli Bahrami * Establish locale. 87*ba7866cdSAli Bahrami */ 88*ba7866cdSAli Bahrami (void) setlocale(LC_ALL, MSG_ORIG(MSG_STR_EMPTY)); 89*ba7866cdSAli Bahrami (void) textdomain(MSG_ORIG(MSG_SUNW_OST_SGS)); 90*ba7866cdSAli Bahrami 91*ba7866cdSAli Bahrami /* Allow a graceful exit up until we start to write an archive */ 92*ba7866cdSAli Bahrami establish_sighandler(sigexit); 93*ba7866cdSAli Bahrami 947c478bd9Sstevel@tonic-gate /* 957c478bd9Sstevel@tonic-gate * Initialize cmd_info 967c478bd9Sstevel@tonic-gate */ 977c478bd9Sstevel@tonic-gate cmd_info = (Cmd_info *)calloc(1, sizeof (Cmd_info)); 987c478bd9Sstevel@tonic-gate if (cmd_info == NULL) { 99*ba7866cdSAli Bahrami int err = errno; 100*ba7866cdSAli Bahrami (void) fprintf(stderr, MSG_INTL(MSG_MALLOC), strerror(err)); 1017c478bd9Sstevel@tonic-gate exit(1); 1027c478bd9Sstevel@tonic-gate } 1037c478bd9Sstevel@tonic-gate 1047c478bd9Sstevel@tonic-gate if (argc < 2) 1057c478bd9Sstevel@tonic-gate usage(); 1067c478bd9Sstevel@tonic-gate 1077c478bd9Sstevel@tonic-gate /* 1087c478bd9Sstevel@tonic-gate * Option handling. 1097c478bd9Sstevel@tonic-gate */ 1107c478bd9Sstevel@tonic-gate if (argv[1][0] != '-') { 1117c478bd9Sstevel@tonic-gate new = (char *)malloc(strlen(argv[1]) + 2); 1127c478bd9Sstevel@tonic-gate if (new == NULL) { 113*ba7866cdSAli Bahrami int err = errno; 114*ba7866cdSAli Bahrami (void) fprintf(stderr, MSG_INTL(MSG_MALLOC), 115*ba7866cdSAli Bahrami strerror(err)); 1167c478bd9Sstevel@tonic-gate exit(1); 1177c478bd9Sstevel@tonic-gate } 118*ba7866cdSAli Bahrami (void) strcpy(new, MSG_ORIG(MSG_STR_HYPHEN)); 1197c478bd9Sstevel@tonic-gate (void) strcat(new, argv[1]); 1207c478bd9Sstevel@tonic-gate argv[1] = new; 1217c478bd9Sstevel@tonic-gate } 1227c478bd9Sstevel@tonic-gate setup(argc, argv, cmd_info); 1237c478bd9Sstevel@tonic-gate 1247c478bd9Sstevel@tonic-gate /* 1257c478bd9Sstevel@tonic-gate * Check SWAP 1267c478bd9Sstevel@tonic-gate */ 127*ba7866cdSAli Bahrami if (cmd_info->opt_flgs & z_FLAG) 1287c478bd9Sstevel@tonic-gate check_swap(); 1297c478bd9Sstevel@tonic-gate 130*ba7866cdSAli Bahrami if (cmd_info->comfun == NULL) { 131*ba7866cdSAli Bahrami if ((cmd_info->opt_flgs & (d_FLAG | r_FLAG | q_FLAG | 132*ba7866cdSAli Bahrami t_FLAG | p_FLAG | m_FLAG | x_FLAG)) == 0) { 133*ba7866cdSAli Bahrami (void) fprintf(stderr, MSG_INTL(MSG_USAGE_01)); 1347c478bd9Sstevel@tonic-gate exit(1); 1357c478bd9Sstevel@tonic-gate } 1367c478bd9Sstevel@tonic-gate } 1377c478bd9Sstevel@tonic-gate 138*ba7866cdSAli Bahrami cmd_info->modified = (cmd_info->opt_flgs & s_FLAG); 1397c478bd9Sstevel@tonic-gate fd = getaf(cmd_info); 1407c478bd9Sstevel@tonic-gate 1417c478bd9Sstevel@tonic-gate if ((fd == -1) && 142*ba7866cdSAli Bahrami (cmd_info->opt_flgs & 143*ba7866cdSAli Bahrami (d_FLAG | m_FLAG | p_FLAG | t_FLAG | x_FLAG)) || 144*ba7866cdSAli Bahrami ((cmd_info->opt_flgs & r_FLAG) && 145*ba7866cdSAli Bahrami (cmd_info->opt_flgs & (a_FLAG | b_FLAG)))) { 146*ba7866cdSAli Bahrami (void) fprintf(stderr, MSG_INTL(MSG_NOT_FOUND_AR), 147*ba7866cdSAli Bahrami cmd_info->arnam); 1487c478bd9Sstevel@tonic-gate exit(1); 1497c478bd9Sstevel@tonic-gate } 1507c478bd9Sstevel@tonic-gate 1517c478bd9Sstevel@tonic-gate (*cmd_info->comfun)(cmd_info); 1527c478bd9Sstevel@tonic-gate if (cmd_info->modified) { 153*ba7866cdSAli Bahrami writefile(cmd_info); 1547c478bd9Sstevel@tonic-gate } else 1557c478bd9Sstevel@tonic-gate (void) close(fd); 1567c478bd9Sstevel@tonic-gate 1577c478bd9Sstevel@tonic-gate ret = notfound(cmd_info); 1587c478bd9Sstevel@tonic-gate 1597c478bd9Sstevel@tonic-gate /* 1607c478bd9Sstevel@tonic-gate * Check SWAP 1617c478bd9Sstevel@tonic-gate */ 162*ba7866cdSAli Bahrami if (cmd_info->opt_flgs & z_FLAG) 1637c478bd9Sstevel@tonic-gate check_swap(); 1647c478bd9Sstevel@tonic-gate 1657c478bd9Sstevel@tonic-gate free(new); 1667c478bd9Sstevel@tonic-gate free(cmd_info); 1677c478bd9Sstevel@tonic-gate return (ret); 1687c478bd9Sstevel@tonic-gate 1697c478bd9Sstevel@tonic-gate } 1707c478bd9Sstevel@tonic-gate 1717c478bd9Sstevel@tonic-gate /* 172*ba7866cdSAli Bahrami * Option handing function. 1737c478bd9Sstevel@tonic-gate * Using getopt(), following xcu4 convention. 1747c478bd9Sstevel@tonic-gate */ 1757c478bd9Sstevel@tonic-gate static void 1767c478bd9Sstevel@tonic-gate setup(int argc, char *argv[], Cmd_info *cmd_info) 1777c478bd9Sstevel@tonic-gate { 1787c478bd9Sstevel@tonic-gate int Vflag = 0; 1797c478bd9Sstevel@tonic-gate int c; 1807c478bd9Sstevel@tonic-gate int usage_err = 0; 1817c478bd9Sstevel@tonic-gate 182*ba7866cdSAli Bahrami while ((c = getopt(argc, argv, MSG_ORIG(MSG_STR_OPTIONS))) != -1) { 1837c478bd9Sstevel@tonic-gate switch (c) { 1847c478bd9Sstevel@tonic-gate case 'a': /* position after named archive member file */ 1857c478bd9Sstevel@tonic-gate cmd_info->opt_flgs |= a_FLAG; 1867c478bd9Sstevel@tonic-gate cmd_info->ponam = trim(optarg); 1877c478bd9Sstevel@tonic-gate break; 1887c478bd9Sstevel@tonic-gate case 'b': /* position before named archive member file */ 1897c478bd9Sstevel@tonic-gate case 'i': /* position before named archive member: same as b */ 1907c478bd9Sstevel@tonic-gate cmd_info->opt_flgs |= b_FLAG; 1917c478bd9Sstevel@tonic-gate cmd_info->ponam = trim(optarg); 1927c478bd9Sstevel@tonic-gate break; 1937c478bd9Sstevel@tonic-gate case 'c': /* supress messages */ 1947c478bd9Sstevel@tonic-gate cmd_info->opt_flgs |= c_FLAG; 1957c478bd9Sstevel@tonic-gate break; 1967c478bd9Sstevel@tonic-gate case 'd': 1977c478bd9Sstevel@tonic-gate /* 1987c478bd9Sstevel@tonic-gate * key operation: 1997c478bd9Sstevel@tonic-gate * delete files from the archive 2007c478bd9Sstevel@tonic-gate */ 2017c478bd9Sstevel@tonic-gate setcom(cmd_info, dcmd); 2027c478bd9Sstevel@tonic-gate cmd_info->opt_flgs |= d_FLAG; 2037c478bd9Sstevel@tonic-gate break; 204*ba7866cdSAli Bahrami case 'l': /* ignored */ 2057c478bd9Sstevel@tonic-gate break; 2067c478bd9Sstevel@tonic-gate case 'm': 2077c478bd9Sstevel@tonic-gate /* 2087c478bd9Sstevel@tonic-gate * key operation: 2097c478bd9Sstevel@tonic-gate * move files to end of the archive 2107c478bd9Sstevel@tonic-gate * or as indicated by position flag 2117c478bd9Sstevel@tonic-gate */ 2127c478bd9Sstevel@tonic-gate setcom(cmd_info, mcmd); 2137c478bd9Sstevel@tonic-gate cmd_info->opt_flgs |= m_FLAG; 2147c478bd9Sstevel@tonic-gate break; 2157c478bd9Sstevel@tonic-gate case 'p': 2167c478bd9Sstevel@tonic-gate /* 2177c478bd9Sstevel@tonic-gate * key operation: 2187c478bd9Sstevel@tonic-gate * print files in the archive 2197c478bd9Sstevel@tonic-gate */ 2207c478bd9Sstevel@tonic-gate setcom(cmd_info, pcmd); 2217c478bd9Sstevel@tonic-gate cmd_info->opt_flgs |= p_FLAG; 2227c478bd9Sstevel@tonic-gate break; 2237c478bd9Sstevel@tonic-gate case 'q': 2247c478bd9Sstevel@tonic-gate /* 2257c478bd9Sstevel@tonic-gate * key operation: 2267c478bd9Sstevel@tonic-gate * quickly append files to end of the archive 2277c478bd9Sstevel@tonic-gate */ 2287c478bd9Sstevel@tonic-gate setcom(cmd_info, qcmd); 2297c478bd9Sstevel@tonic-gate cmd_info->opt_flgs |= q_FLAG; 2307c478bd9Sstevel@tonic-gate break; 2317c478bd9Sstevel@tonic-gate case 'r': 2327c478bd9Sstevel@tonic-gate /* 2337c478bd9Sstevel@tonic-gate * key operation: 2347c478bd9Sstevel@tonic-gate * replace or add files to the archive 2357c478bd9Sstevel@tonic-gate */ 2367c478bd9Sstevel@tonic-gate setcom(cmd_info, rcmd); 2377c478bd9Sstevel@tonic-gate cmd_info->opt_flgs |= r_FLAG; 2387c478bd9Sstevel@tonic-gate break; 2397c478bd9Sstevel@tonic-gate case 's': /* force symbol table regeneration */ 2407c478bd9Sstevel@tonic-gate cmd_info->opt_flgs |= s_FLAG; 2417c478bd9Sstevel@tonic-gate break; 242*ba7866cdSAli Bahrami case 'S': /* Build SYM64 symbol table */ 243*ba7866cdSAli Bahrami cmd_info->opt_flgs |= S_FLAG; 244*ba7866cdSAli Bahrami break; 2457c478bd9Sstevel@tonic-gate case 't': 2467c478bd9Sstevel@tonic-gate /* 2477c478bd9Sstevel@tonic-gate * key operation: 2487c478bd9Sstevel@tonic-gate * print table of contents 2497c478bd9Sstevel@tonic-gate */ 2507c478bd9Sstevel@tonic-gate setcom(cmd_info, tcmd); 2517c478bd9Sstevel@tonic-gate cmd_info->opt_flgs |= t_FLAG; 2527c478bd9Sstevel@tonic-gate break; 2537c478bd9Sstevel@tonic-gate case 'u': /* update: change archive dependent on file dates */ 2547c478bd9Sstevel@tonic-gate cmd_info->opt_flgs |= u_FLAG; 2557c478bd9Sstevel@tonic-gate break; 2567c478bd9Sstevel@tonic-gate case 'v': /* verbose */ 2577c478bd9Sstevel@tonic-gate cmd_info->opt_flgs |= v_FLAG; 2587c478bd9Sstevel@tonic-gate break; 2597c478bd9Sstevel@tonic-gate case 'x': 2607c478bd9Sstevel@tonic-gate /* 2617c478bd9Sstevel@tonic-gate * key operation: 2627c478bd9Sstevel@tonic-gate * extract files from the archive 2637c478bd9Sstevel@tonic-gate */ 2647c478bd9Sstevel@tonic-gate setcom(cmd_info, xcmd); 2657c478bd9Sstevel@tonic-gate cmd_info->opt_flgs |= x_FLAG; 2667c478bd9Sstevel@tonic-gate break; 2677c478bd9Sstevel@tonic-gate case 'z': 2687c478bd9Sstevel@tonic-gate cmd_info->opt_flgs |= z_FLAG; 2697c478bd9Sstevel@tonic-gate break; 2707c478bd9Sstevel@tonic-gate case 'V': 2717c478bd9Sstevel@tonic-gate /* 2727c478bd9Sstevel@tonic-gate * print version information. 2737c478bd9Sstevel@tonic-gate * adjust command line access accounting 2747c478bd9Sstevel@tonic-gate */ 2757c478bd9Sstevel@tonic-gate if (Vflag == 0) { 276*ba7866cdSAli Bahrami (void) fprintf(stderr, 277*ba7866cdSAli Bahrami MSG_ORIG(MSG_FMT_VERSION), 2787c478bd9Sstevel@tonic-gate (const char *)SGU_PKG, 2797c478bd9Sstevel@tonic-gate (const char *)SGU_REL); 2807c478bd9Sstevel@tonic-gate Vflag++; 2817c478bd9Sstevel@tonic-gate } 2827c478bd9Sstevel@tonic-gate break; 2837c478bd9Sstevel@tonic-gate case 'C': 284*ba7866cdSAli Bahrami cmd_info->opt_flgs |= C_FLAG; 2857c478bd9Sstevel@tonic-gate break; 2867c478bd9Sstevel@tonic-gate case 'M': 287*ba7866cdSAli Bahrami /* 288*ba7866cdSAli Bahrami * -M was an original undocumented AT&T feature that 289*ba7866cdSAli Bahrami * would force the use of mmap() instead of read() 290*ba7866cdSAli Bahrami * for pulling file data into the process before 291*ba7866cdSAli Bahrami * writing it to the archive. Ignored. 292*ba7866cdSAli Bahrami */ 2937c478bd9Sstevel@tonic-gate break; 2947c478bd9Sstevel@tonic-gate case 'T': 295*ba7866cdSAli Bahrami cmd_info->opt_flgs |= T_FLAG; 2967c478bd9Sstevel@tonic-gate break; 2977c478bd9Sstevel@tonic-gate case ':': 298*ba7866cdSAli Bahrami (void) fprintf(stderr, MSG_INTL(MSG_USAGE_02), optopt); 2997c478bd9Sstevel@tonic-gate usage_err++; 3007c478bd9Sstevel@tonic-gate break; 3017c478bd9Sstevel@tonic-gate case '?': 302*ba7866cdSAli Bahrami (void) fprintf(stderr, MSG_INTL(MSG_USAGE_03), optopt); 3037c478bd9Sstevel@tonic-gate usage_err++; 3047c478bd9Sstevel@tonic-gate break; 3057c478bd9Sstevel@tonic-gate } 3067c478bd9Sstevel@tonic-gate } 3077c478bd9Sstevel@tonic-gate 3087c478bd9Sstevel@tonic-gate if (usage_err || argc - optind < 1) 3097c478bd9Sstevel@tonic-gate usage(); 3107c478bd9Sstevel@tonic-gate 311*ba7866cdSAli Bahrami cmd_info->arnam = argv[optind]; 3127c478bd9Sstevel@tonic-gate cmd_info->namv = &argv[optind+1]; 3137c478bd9Sstevel@tonic-gate cmd_info->namc = argc - optind - 1; 3147c478bd9Sstevel@tonic-gate } 3157c478bd9Sstevel@tonic-gate 3167c478bd9Sstevel@tonic-gate 3177c478bd9Sstevel@tonic-gate /* 3187c478bd9Sstevel@tonic-gate * Set the function to be called to do the key operation. 3197c478bd9Sstevel@tonic-gate * Check that only one key is indicated. 3207c478bd9Sstevel@tonic-gate */ 3217c478bd9Sstevel@tonic-gate static void 322*ba7866cdSAli Bahrami setcom(Cmd_info *cmd_info, Cmd_func *fun) 3237c478bd9Sstevel@tonic-gate { 3247c478bd9Sstevel@tonic-gate if (cmd_info->comfun != 0) { 325*ba7866cdSAli Bahrami (void) fprintf(stderr, MSG_INTL(MSG_USAGE_04)); 3267c478bd9Sstevel@tonic-gate exit(1); 3277c478bd9Sstevel@tonic-gate } 3287c478bd9Sstevel@tonic-gate cmd_info->comfun = fun; 3297c478bd9Sstevel@tonic-gate } 3307c478bd9Sstevel@tonic-gate 3317c478bd9Sstevel@tonic-gate static void 332d6555420Smike_s usage(void) 3337c478bd9Sstevel@tonic-gate { 334*ba7866cdSAli Bahrami (void) fprintf(stderr, MSG_INTL(MSG_USAGE)); 3357c478bd9Sstevel@tonic-gate exit(1); 3367c478bd9Sstevel@tonic-gate } 3377c478bd9Sstevel@tonic-gate 3387c478bd9Sstevel@tonic-gate /*ARGSUSED0*/ 3397c478bd9Sstevel@tonic-gate static void 340d6555420Smike_s sigexit(int sig) 3417c478bd9Sstevel@tonic-gate { 3427c478bd9Sstevel@tonic-gate exit(100); 3437c478bd9Sstevel@tonic-gate } 3447c478bd9Sstevel@tonic-gate 3457c478bd9Sstevel@tonic-gate /* tells the user which of the listed files were not found in the archive */ 3467c478bd9Sstevel@tonic-gate 3477c478bd9Sstevel@tonic-gate static int 3487c478bd9Sstevel@tonic-gate notfound(Cmd_info *cmd_info) 3497c478bd9Sstevel@tonic-gate { 350d6555420Smike_s int i, n; 3517c478bd9Sstevel@tonic-gate 3527c478bd9Sstevel@tonic-gate n = 0; 3537c478bd9Sstevel@tonic-gate for (i = 0; i < cmd_info->namc; i++) 3547c478bd9Sstevel@tonic-gate if (cmd_info->namv[i]) { 355*ba7866cdSAli Bahrami (void) fprintf(stderr, MSG_INTL(MSG_NOT_FOUND_FILE), 356*ba7866cdSAli Bahrami cmd_info->namv[i]); 3577c478bd9Sstevel@tonic-gate n++; 3587c478bd9Sstevel@tonic-gate } 3597c478bd9Sstevel@tonic-gate return (n); 3607c478bd9Sstevel@tonic-gate } 3617c478bd9Sstevel@tonic-gate 3627c478bd9Sstevel@tonic-gate /* 3637c478bd9Sstevel@tonic-gate * Debugging info 3647c478bd9Sstevel@tonic-gate */ 3657c478bd9Sstevel@tonic-gate static void 366d6555420Smike_s check_swap(void) 3677c478bd9Sstevel@tonic-gate { 368*ba7866cdSAli Bahrami (void) system(MSG_ORIG(MSG_CMD_SWAP)); 3697c478bd9Sstevel@tonic-gate } 370