VirtualBox

Changeset 50551 in vbox


Ignore:
Timestamp:
Feb 24, 2014 9:31:41 AM (11 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
92405
Message:

src/adpctl: if /sbin/ifconfig does not exist, fall back to /bin/ifconfig

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/apps/adpctl/VBoxNetAdpCtl.cpp

    r44529 r50551  
    2727#include <sys/wait.h>
    2828#include <sys/ioctl.h>
     29#include <sys/stat.h>
    2930#include <fcntl.h>
    3031#ifdef RT_OS_LINUX
     
    6263typedef VBOXNETADPREQ *PVBOXNETADPREQ;
    6364
    64 
    65 #define VBOXADPCTL_IFCONFIG_PATH "/sbin/ifconfig"
     65#define VBOXADPCTL_IFCONFIG_PATH1 "/sbin/ifconfig"
     66#define VBOXADPCTL_IFCONFIG_PATH2 "/bin/ifconfig"
     67static char *g_pszIfConfig;
    6668
    6769#if defined(RT_OS_LINUX)
     
    8385}
    8486
     87static void setPathIfConfig(void)
     88{
     89    struct stat s;
     90    if (   !stat(VBOXADPCTL_IFCONFIG_PATH1, &s)
     91        && S_ISREG(s.st_mode))
     92        g_pszIfConfig = (char*)VBOXADPCTL_IFCONFIG_PATH1;
     93    else
     94        g_pszIfConfig = (char*)VBOXADPCTL_IFCONFIG_PATH2;
     95}
     96
    8597static int executeIfconfig(const char *pcszAdapterName, const char *pcszArg1,
    8698                           const char *pcszArg2 = NULL,
     
    91103    const char * const argv[] =
    92104    {
    93         VBOXADPCTL_IFCONFIG_PATH,
     105        g_pszIfConfig,
    94106        pcszAdapterName,
    95107        pcszArg1, /* [address family] */
     
    110122            break;
    111123        case 0: /* Child process. */
    112             if (execve(VBOXADPCTL_IFCONFIG_PATH, (char * const*)argv, envp) == -1)
     124            if (execve(argv[0], (char * const*)argv, envp) == -1)
    113125                rc = EXIT_FAILURE;
    114126            break;
     
    130142    int rc;
    131143    int fds[2];
    132     char * const argv[] = { (char*)VBOXADPCTL_IFCONFIG_PATH, pszAdapterName, NULL };
     144    char * const argv[] = { g_pszIfConfig, pszAdapterName, NULL };
    133145    char * const envp[] = { (char*)"LC_ALL=C", NULL };
    134146
     
    150162        rc = dup2(fds[1], STDOUT_FILENO);
    151163        if (rc >= 0)
    152             execve(VBOXADPCTL_IFCONFIG_PATH, argv, envp);
     164            execve(argv[0], argv, envp);
    153165        return false;
    154166    }
     
    250262    bool fRemove = false;
    251263    VBOXNETADPREQ Req;
     264
     265    setPathIfConfig();
    252266
    253267    switch (argc)
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette