* [PATCH 1/6] tracepath: re-use printf return in print_host
@ 2012-08-01 15:45 Mike Frysinger
2012-08-01 15:45 ` [PATCH 2/6] fix up strict-aliasing warnings Mike Frysinger
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Mike Frysinger @ 2012-08-01 15:45 UTC (permalink / raw)
To: YOSHIFUJI Hideaki; +Cc: netdev
Since the printf funcs already return the length of chars displayed,
use that value instead of re-calculating the length with strlen.
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
tracepath.c | 11 ++++-------
tracepath6.c | 11 ++++-------
2 files changed, 8 insertions(+), 14 deletions(-)
diff --git a/tracepath.c b/tracepath.c
index bcec20d..ca84a69 100644
--- a/tracepath.c
+++ b/tracepath.c
@@ -68,13 +68,10 @@ void data_wait(int fd)
void print_host(const char *a, const char *b, int both)
{
- int plen = 0;
- printf("%s", a);
- plen = strlen(a);
- if (both) {
- printf(" (%s)", b);
- plen += strlen(b) + 3;
- }
+ int plen;
+ plen = printf("%s", a);
+ if (both)
+ plen += printf(" (%s)", b);
if (plen >= HOST_COLUMN_SIZE)
plen = HOST_COLUMN_SIZE - 1;
printf("%*s", HOST_COLUMN_SIZE - plen, "");
diff --git a/tracepath6.c b/tracepath6.c
index 0cbe3a1..5c2db8f 100644
--- a/tracepath6.c
+++ b/tracepath6.c
@@ -80,13 +80,10 @@ void data_wait(int fd)
void print_host(const char *a, const char *b, int both)
{
- int plen = 0;
- printf("%s", a);
- plen = strlen(a);
- if (both) {
- printf(" (%s)", b);
- plen += strlen(b) + 3;
- }
+ int plen;
+ plen = printf("%s", a);
+ if (both)
+ plen += printf(" (%s)", b);
if (plen >= HOST_COLUMN_SIZE)
plen = HOST_COLUMN_SIZE - 1;
printf("%*s", HOST_COLUMN_SIZE - plen, "");
--
1.7.9.7
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH 2/6] fix up strict-aliasing warnings 2012-08-01 15:45 [PATCH 1/6] tracepath: re-use printf return in print_host Mike Frysinger @ 2012-08-01 15:45 ` Mike Frysinger 2012-08-01 15:45 ` [PATCH 3/6] tracepath: fix typo in -l error message Mike Frysinger ` (3 subsequent siblings) 4 siblings, 0 replies; 6+ messages in thread From: Mike Frysinger @ 2012-08-01 15:45 UTC (permalink / raw) To: YOSHIFUJI Hideaki; +Cc: netdev Current build of some tools results in gcc warning about strict-aliasing violations. So change those freaky casts to memcpy's. When the pointer types work out, gcc will optimize this away anyways. Signed-off-by: Mike Frysinger <vapier@gentoo.org> --- ping.c | 4 ++-- ping6.c | 13 +++++++++---- tracepath.c | 2 +- tracepath6.c | 2 +- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/ping.c b/ping.c index 1425d1d..1110a1a 100644 --- a/ping.c +++ b/ping.c @@ -444,7 +444,7 @@ main(int argc, char **argv) int i; rspace[1] = 4+nroute*8; for (i=0; i<nroute; i++) - *(__u32*)&rspace[4+i*8] = route[i]; + memcpy(&rspace[4+i*8], &route[i], 4); } if (setsockopt(icmp_sock, IPPROTO_IP, IP_OPTIONS, rspace, rspace[1]) < 0) { rspace[3] = 2; @@ -464,7 +464,7 @@ main(int argc, char **argv) rspace[1+IPOPT_OLEN] = 3 + nroute*4; rspace[1+IPOPT_OFFSET] = IPOPT_MINOFF; for (i=0; i<nroute; i++) - *(__u32*)&rspace[4+i*4] = route[i]; + memcpy(&rspace[4+i*4], &route[i], 4); if (setsockopt(icmp_sock, IPPROTO_IP, IP_OPTIONS, rspace, 4 + nroute*4) < 0) { perror("ping: record route"); diff --git a/ping6.c b/ping6.c index 1673937..ce102d0 100644 --- a/ping6.c +++ b/ping6.c @@ -1142,18 +1142,21 @@ int build_niquery(__u8 *_nih) { struct ni_hdr *nih; int cc; + __u16 this_nonce; nih = (struct ni_hdr *)_nih; nih->ni_cksum = 0; - CLR(ntohs((*(__u16*)(nih->ni_nonce))) % mx_dup_ck); + memcpy(&this_nonce, &nih->ni_nonce, sizeof(this_nonce)); + CLR(ntohs(this_nonce) % mx_dup_ck); nih->ni_type = ICMPV6_NI_QUERY; cc = sizeof(*nih); datalen = 0; memcpy(nih->ni_nonce, ni_nonce, sizeof(nih->ni_nonce)); - *(__u16*)(nih->ni_nonce) = htons(ntransmitted + 1); + this_nonce = htons(ntransmitted + 1); + memcpy(&nih->ni_nonce, &this_nonce, sizeof(this_nonce)); nih->ni_code = ni_subject_type; nih->ni_qtype = htons(ni_query); @@ -1367,7 +1370,7 @@ parse_reply(struct msghdr *msg, int cc, void *addr, struct timeval *tv) #endif if (c->cmsg_len < CMSG_LEN(sizeof(int))) continue; - hops = *(int*)CMSG_DATA(c); + memcpy(&hops, CMSG_DATA(c), sizeof(int)); } } @@ -1391,7 +1394,9 @@ parse_reply(struct msghdr *msg, int cc, void *addr, struct timeval *tv) return 0; } else if (icmph->icmp6_type == ICMPV6_NI_REPLY) { struct ni_hdr *nih = (struct ni_hdr *)icmph; - __u16 seq = ntohs(*(__u16 *)nih->ni_nonce); + __u16 seq; + memcpy(&seq, &nih->ni_nonce, sizeof(seq)); + seq = ntohs(seq); if (memcmp(&nih->ni_nonce[2], &ni_nonce[2], sizeof(ni_nonce) - sizeof(__u16))) return 1; if (gather_statistics((__u8*)icmph, sizeof(*icmph), cc, diff --git a/tracepath.c b/tracepath.c index ca84a69..0a14b1b 100644 --- a/tracepath.c +++ b/tracepath.c @@ -142,7 +142,7 @@ restart: if (cmsg->cmsg_type == IP_RECVERR) { e = (struct sock_extended_err *) CMSG_DATA(cmsg); } else if (cmsg->cmsg_type == IP_TTL) { - rethops = *(int*)CMSG_DATA(cmsg); + memcpy(&rethops, CMSG_DATA(cmsg), sizeof(int)); } else { printf("cmsg:%d\n ", cmsg->cmsg_type); } diff --git a/tracepath6.c b/tracepath6.c index 5c2db8f..77a3563 100644 --- a/tracepath6.c +++ b/tracepath6.c @@ -170,7 +170,7 @@ restart: #ifdef IPV6_2292HOPLIMIT case IPV6_2292HOPLIMIT: #endif - rethops = *(int*)CMSG_DATA(cmsg); + memcpy(&rethops, CMSG_DATA(cmsg), sizeof(int)); break; default: printf("cmsg6:%d\n ", cmsg->cmsg_type); -- 1.7.9.7 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/6] tracepath: fix typo in -l error message 2012-08-01 15:45 [PATCH 1/6] tracepath: re-use printf return in print_host Mike Frysinger 2012-08-01 15:45 ` [PATCH 2/6] fix up strict-aliasing warnings Mike Frysinger @ 2012-08-01 15:45 ` Mike Frysinger 2012-08-01 15:45 ` [PATCH 4/6] ping: fix building on older systems Mike Frysinger ` (2 subsequent siblings) 4 siblings, 0 replies; 6+ messages in thread From: Mike Frysinger @ 2012-08-01 15:45 UTC (permalink / raw) To: YOSHIFUJI Hideaki; +Cc: netdev, Jeroen Roovers From: Jeroen Roovers <jer@gentoo.org> Signed-off-by: Jeroen Roovers <jer@gentoo.org> Signed-off-by: Mike Frysinger <vapier@gentoo.org> --- tracepath.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tracepath.c b/tracepath.c index 0a14b1b..90e1b28 100644 --- a/tracepath.c +++ b/tracepath.c @@ -306,7 +306,7 @@ main(int argc, char **argv) break; case 'l': if ((mtu = atoi(optarg)) <= overhead) { - fprintf(stderr, "Error: length must be >= %d\n", overhead); + fprintf(stderr, "Error: length must be > %d\n", overhead); exit(1); } break; -- 1.7.9.7 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 4/6] ping: fix building on older systems 2012-08-01 15:45 [PATCH 1/6] tracepath: re-use printf return in print_host Mike Frysinger 2012-08-01 15:45 ` [PATCH 2/6] fix up strict-aliasing warnings Mike Frysinger 2012-08-01 15:45 ` [PATCH 3/6] tracepath: fix typo in -l error message Mike Frysinger @ 2012-08-01 15:45 ` Mike Frysinger 2012-08-01 15:45 ` [PATCH 5/6] start gitignore files Mike Frysinger 2012-08-01 15:45 ` [PATCH 6/6] doc: fix parallel build of html/man pages Mike Frysinger 4 siblings, 0 replies; 6+ messages in thread From: Mike Frysinger @ 2012-08-01 15:45 UTC (permalink / raw) To: YOSHIFUJI Hideaki; +Cc: netdev The SO_MARK define is somewhat recent (linux-2.6.25), so check for its existence before we try to use it. Signed-off-by: Mike Frysinger <vapier@gentoo.org> --- ping_common.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ping_common.c b/ping_common.c index 287d0e6..6fd252d 100644 --- a/ping_common.c +++ b/ping_common.c @@ -486,6 +486,7 @@ void setup(int icmp_sock) fprintf(stderr, "Warning: no SO_TIMESTAMP support, falling back to SIOCGSTAMP\n"); } #endif +#ifdef SO_MARK if (options & F_MARK) { if (setsockopt(icmp_sock, SOL_SOCKET, SO_MARK, &mark, sizeof(mark)) == -1) { @@ -499,6 +500,7 @@ void setup(int icmp_sock) #endif } } +#endif /* Set some SNDTIMEO to prevent blocking forever * on sends, when device is too slow or stalls. Just put limit -- 1.7.9.7 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 5/6] start gitignore files 2012-08-01 15:45 [PATCH 1/6] tracepath: re-use printf return in print_host Mike Frysinger ` (2 preceding siblings ...) 2012-08-01 15:45 ` [PATCH 4/6] ping: fix building on older systems Mike Frysinger @ 2012-08-01 15:45 ` Mike Frysinger 2012-08-01 15:45 ` [PATCH 6/6] doc: fix parallel build of html/man pages Mike Frysinger 4 siblings, 0 replies; 6+ messages in thread From: Mike Frysinger @ 2012-08-01 15:45 UTC (permalink / raw) To: YOSHIFUJI Hideaki; +Cc: netdev Signed-off-by: Mike Frysinger <vapier@gentoo.org> --- .gitignore | 22 ++++++++++++++++++++++ doc/.gitignore | 2 ++ 2 files changed, 24 insertions(+) create mode 100644 .gitignore create mode 100644 doc/.gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..30ed00c --- /dev/null +++ b/.gitignore @@ -0,0 +1,22 @@ +*~ +*.o + +*.diff +*.orig +*.patch +*.rej + +core +.gdb_history +.gdbinit + +/arping +/clockdiff +/ping +/ping6 +/rarpd +/rdisc +/tftpd +/tracepath +/tracepath6 +/traceroute6 diff --git a/doc/.gitignore b/doc/.gitignore new file mode 100644 index 0000000..085639f --- /dev/null +++ b/doc/.gitignore @@ -0,0 +1,2 @@ +*.html +*.8 -- 1.7.9.7 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 6/6] doc: fix parallel build of html/man pages 2012-08-01 15:45 [PATCH 1/6] tracepath: re-use printf return in print_host Mike Frysinger ` (3 preceding siblings ...) 2012-08-01 15:45 ` [PATCH 5/6] start gitignore files Mike Frysinger @ 2012-08-01 15:45 ` Mike Frysinger 4 siblings, 0 replies; 6+ messages in thread From: Mike Frysinger @ 2012-08-01 15:45 UTC (permalink / raw) To: YOSHIFUJI Hideaki; +Cc: netdev The use of the same tempdir prevents building of these files in parallel. So build all of them in unique tempdirs so we can do them in parallel. Signed-off-by: Mike Frysinger <vapier@gentoo.org> --- doc/Makefile | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/doc/Makefile b/doc/Makefile index 7ec4f1c..a9c303e 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -12,29 +12,40 @@ man: $(MANFILES) # lots of some strange temporary junk directories and files. # So, scope it to a temporary dir and clean all after each run. -$(HTMLFILES): index.db - @-rm -rf tmp.db2html - @mkdir tmp.db2html - @set -e; cd tmp.db2html; docbook2html ../$< ; mv *.html .. - @-rm -rf tmp.db2html +SETUP_TMPDIR = \ + t="tmp.db2html.$@"; \ + rm -rf $$t; \ + mkdir $$t; \ + pushd $$t >/dev/null +CLEAN_TMPDIR = \ + popd >/dev/null; \ + rm -rf $$t + +MAKE_HTML = \ + @set -e; \ + $(SETUP_TMPDIR); \ + docbook2html ../$<; \ + mv *.html ..; \ + $(CLEAN_TMPDIR) +$(HTMLFILES): index.db + $(MAKE_HTML) iputils.html: iputils.db - @-rm -rf tmp.db2html - @mkdir tmp.db2html - @set -e; cd tmp.db2html; docbook2html -u -o html ../$< ; mv html/$@ .. - @-rm -rf tmp.db2html + $(MAKE_HTML) # docbook2man produces utterly ugly output and I did not find # any way to customize this but hacking backend perl script a little. # Well, hence... $(MANFILES): index.db - @-mkdir tmp.db2man - @set -e; cd tmp.db2man; nsgmls ../$< | sgmlspl ../docbook2man-spec.pl ; mv $@ .. - @-rm -rf tmp.db2man + @set -e; \ + $(SETUP_TMPDIR); \ + nsgmls ../$< | sgmlspl ../docbook2man-spec.pl; \ + mv $@ ..; \ + $(CLEAN_TMPDIR) clean: - @rm -rf $(MANFILES) $(HTMLFILES) iputils.html tmp.db2html tmp.db2man + @rm -rf $(MANFILES) $(HTMLFILES) iputils.html tmp.db2html* tmp.db2man* snapshot: @date "+%y%m%d" > snapshot.db -- 1.7.9.7 ^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2012-08-01 15:45 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-08-01 15:45 [PATCH 1/6] tracepath: re-use printf return in print_host Mike Frysinger 2012-08-01 15:45 ` [PATCH 2/6] fix up strict-aliasing warnings Mike Frysinger 2012-08-01 15:45 ` [PATCH 3/6] tracepath: fix typo in -l error message Mike Frysinger 2012-08-01 15:45 ` [PATCH 4/6] ping: fix building on older systems Mike Frysinger 2012-08-01 15:45 ` [PATCH 5/6] start gitignore files Mike Frysinger 2012-08-01 15:45 ` [PATCH 6/6] doc: fix parallel build of html/man pages Mike Frysinger
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox