Prex Home / Browse Source - Prex Version: 0.9.0

root/usr/lib/libc/gen/execl.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. execl

   1 /*      $NetBSD: execl.c,v 1.11 2003/08/07 16:42:47 agc Exp $   */
   2 
   3 /*-
   4  * Copyright (c) 1991, 1993
   5  *      The Regents of the University of California.  All rights reserved.
   6  *
   7  * Redistribution and use in source and binary forms, with or without
   8  * modification, are permitted provided that the following conditions
   9  * are met:
  10  * 1. Redistributions of source code must retain the above copyright
  11  *    notice, this list of conditions and the following disclaimer.
  12  * 2. Redistributions in binary form must reproduce the above copyright
  13  *    notice, this list of conditions and the following disclaimer in the
  14  *    documentation and/or other materials provided with the distribution.
  15  * 3. Neither the name of the University nor the names of its contributors
  16  *    may be used to endorse or promote products derived from this software
  17  *    without specific prior written permission.
  18  *
  19  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  20  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  22  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  23  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  24  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  25  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  26  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  27  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  28  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  29  * SUCH DAMAGE.
  30  */
  31 
  32 #include <sys/cdefs.h>
  33 #include <stdarg.h>
  34 #include <stdlib.h>
  35 #include <unistd.h>
  36 
  37 extern char **environ;
  38 
  39 int
  40 execl(const char *name, const char *arg, ...)
  41 {
  42         int r;
  43 #if defined(__x86__)
  44         r = execve(name, (char **) &arg, environ);
  45         return (r);
  46 #else
  47         va_list ap;
  48         char **argv;
  49         int i;
  50 
  51         va_start(ap, arg);
  52         for (i = 2; va_arg(ap, char *) != NULL; i++)
  53                 ;
  54         va_end(ap);
  55 
  56         argv = alloca (i * sizeof (char *));
  57 
  58         va_start(ap, arg);
  59         argv[0] = (char *) arg;
  60         for (i = 1; (argv[i] = (char *) va_arg(ap, char *)) != NULL; i++)
  61                 ;
  62         va_end(ap);
  63 
  64         r = execve(name, argv, environ);
  65         return (r);
  66 #endif
  67 }

/* [<][>][^][v][top][bottom][index][help] */