copy fixes to simplify link copying and always do the right thing.
ping could segfault because I'm an idiot, and tried to put a value in where I hadn't allocated storage. choke. -Erik
This commit is contained in:
parent
d7a44c76fe
commit
8e759aa31f
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: ping.c,v 1.7 2000/01/26 20:06:48 erik Exp $
|
* $Id: ping.c,v 1.8 2000/01/29 05:52:40 erik Exp $
|
||||||
* Mini ping implementation for busybox
|
* Mini ping implementation for busybox
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
|
* Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
|
||||||
@ -312,18 +312,14 @@ static void unpack(char *buf, int sz, struct sockaddr_in *from)
|
|||||||
|
|
||||||
static void ping(char *host)
|
static void ping(char *host)
|
||||||
{
|
{
|
||||||
struct protoent *proto;
|
struct protoent *proto=NULL;
|
||||||
struct hostent *h;
|
struct hostent *h;
|
||||||
char buf[MAXHOSTNAMELEN];
|
char buf[MAXHOSTNAMELEN];
|
||||||
char packet[DEFDATALEN + MAXIPLEN + MAXICMPLEN];
|
char packet[DEFDATALEN + MAXIPLEN + MAXICMPLEN];
|
||||||
int sockopt;
|
int sockopt;
|
||||||
|
|
||||||
if (!(proto = getprotobyname("icmp"))) {
|
proto = getprotobyname("icmp");
|
||||||
/* getprotobyname failed, so just silently force
|
if ((pingsock = socket(AF_INET, SOCK_RAW, (proto)? proto->p_proto : 1 )) < 0) { /* 1 == ICMP */
|
||||||
* proto->p_proto to have the correct value for "icmp" */
|
|
||||||
proto->p_proto = 1;
|
|
||||||
}
|
|
||||||
if ((pingsock = socket(AF_INET, SOCK_RAW, proto->p_proto)) < 0) { /* 1 == ICMP */
|
|
||||||
if (errno == EPERM) {
|
if (errno == EPERM) {
|
||||||
fprintf(stderr, "ping: permission denied. (are you root?)\n");
|
fprintf(stderr, "ping: permission denied. (are you root?)\n");
|
||||||
} else {
|
} else {
|
||||||
|
12
ping.c
12
ping.c
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* $Id: ping.c,v 1.7 2000/01/26 20:06:48 erik Exp $
|
* $Id: ping.c,v 1.8 2000/01/29 05:52:40 erik Exp $
|
||||||
* Mini ping implementation for busybox
|
* Mini ping implementation for busybox
|
||||||
*
|
*
|
||||||
* Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
|
* Copyright (C) 1999 by Randolph Chung <tausq@debian.org>
|
||||||
@ -312,18 +312,14 @@ static void unpack(char *buf, int sz, struct sockaddr_in *from)
|
|||||||
|
|
||||||
static void ping(char *host)
|
static void ping(char *host)
|
||||||
{
|
{
|
||||||
struct protoent *proto;
|
struct protoent *proto=NULL;
|
||||||
struct hostent *h;
|
struct hostent *h;
|
||||||
char buf[MAXHOSTNAMELEN];
|
char buf[MAXHOSTNAMELEN];
|
||||||
char packet[DEFDATALEN + MAXIPLEN + MAXICMPLEN];
|
char packet[DEFDATALEN + MAXIPLEN + MAXICMPLEN];
|
||||||
int sockopt;
|
int sockopt;
|
||||||
|
|
||||||
if (!(proto = getprotobyname("icmp"))) {
|
proto = getprotobyname("icmp");
|
||||||
/* getprotobyname failed, so just silently force
|
if ((pingsock = socket(AF_INET, SOCK_RAW, (proto)? proto->p_proto : 1 )) < 0) { /* 1 == ICMP */
|
||||||
* proto->p_proto to have the correct value for "icmp" */
|
|
||||||
proto->p_proto = 1;
|
|
||||||
}
|
|
||||||
if ((pingsock = socket(AF_INET, SOCK_RAW, proto->p_proto)) < 0) { /* 1 == ICMP */
|
|
||||||
if (errno == EPERM) {
|
if (errno == EPERM) {
|
||||||
fprintf(stderr, "ping: permission denied. (are you root?)\n");
|
fprintf(stderr, "ping: permission denied. (are you root?)\n");
|
||||||
} else {
|
} else {
|
||||||
|
18
utility.c
18
utility.c
@ -182,6 +182,11 @@ copyFile( const char *srcName, const char *destName,
|
|||||||
perror(destName);
|
perror(destName);
|
||||||
return (FALSE);
|
return (FALSE);
|
||||||
}
|
}
|
||||||
|
#if (__GLIBC__ >= 2) && (__GLIBC_MINOR__ >= 1)
|
||||||
|
if (setModes == TRUE) {
|
||||||
|
lchown(destName, srcStatBuf.st_uid, srcStatBuf.st_gid);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
} else if (S_ISFIFO(srcStatBuf.st_mode)) {
|
} else if (S_ISFIFO(srcStatBuf.st_mode)) {
|
||||||
//fprintf(stderr, "copying fifo %s to %s\n", srcName, destName);
|
//fprintf(stderr, "copying fifo %s to %s\n", srcName, destName);
|
||||||
if (mkfifo(destName, 0644)) {
|
if (mkfifo(destName, 0644)) {
|
||||||
@ -225,16 +230,9 @@ copyFile( const char *srcName, const char *destName,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (setModes == TRUE) {
|
if (setModes == TRUE) {
|
||||||
if (! S_ISLNK(srcStatBuf.st_mode)) {
|
/* This is fine, since symlinks never get here */
|
||||||
chown(destName, srcStatBuf.st_uid, srcStatBuf.st_gid);
|
chown(destName, srcStatBuf.st_uid, srcStatBuf.st_gid);
|
||||||
/* Never chmod a symlink; it follows the link */
|
chmod(destName, srcStatBuf.st_mode);
|
||||||
chmod(destName, srcStatBuf.st_mode);
|
|
||||||
}
|
|
||||||
#if (__GLIBC__ >= 2) && (__GLIBC_MINOR__ >= 1)
|
|
||||||
else {
|
|
||||||
lchown(destName, srcStatBuf.st_uid, srcStatBuf.st_gid);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
times.actime = srcStatBuf.st_atime;
|
times.actime = srcStatBuf.st_atime;
|
||||||
times.modtime = srcStatBuf.st_mtime;
|
times.modtime = srcStatBuf.st_mtime;
|
||||||
utime(destName, ×);
|
utime(destName, ×);
|
||||||
|
Loading…
Reference in New Issue
Block a user