Module Name: src Committed By: christos Date: Wed Aug 17 08:22:50 UTC 2011
Modified Files: src/external/bsd/am-utils/dist/amd: readdir.c Log Message: fix type-punned warnings using memcpy To generate a diff of this commit: cvs rdiff -u -r1.1.1.2 -r1.2 src/external/bsd/am-utils/dist/amd/readdir.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/external/bsd/am-utils/dist/amd/readdir.c diff -u src/external/bsd/am-utils/dist/amd/readdir.c:1.1.1.2 src/external/bsd/am-utils/dist/amd/readdir.c:1.2 --- src/external/bsd/am-utils/dist/amd/readdir.c:1.1.1.2 Fri Mar 20 16:26:50 2009 +++ src/external/bsd/am-utils/dist/amd/readdir.c Wed Aug 17 04:22:50 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: readdir.c,v 1.1.1.2 2009/03/20 20:26:50 christos Exp $ */ +/* $NetBSD: readdir.c,v 1.2 2011/08/17 08:22:50 christos Exp $ */ /* * Copyright (c) 1997-2009 Erez Zadok @@ -57,6 +57,7 @@ #define DOT_DOT_COOKIE (u_int) 1 #define MAX_CHAIN 2048 +static const u_int zero = 0, dot_dot_cookie = DOT_DOT_COOKIE; /**************************************************************************** *** FORWARD DEFINITIONS *** @@ -181,7 +182,7 @@ /* we have space. put entry in next cell */ ++last_cookie; chain[num_entries].ne_fileid = (u_int) last_cookie; - *(u_int *) chain[num_entries].ne_cookie = (u_int) last_cookie; + memcpy(chain[num_entries].ne_cookie, &last_cookie, sizeof(last_cookie)); chain[num_entries].ne_name = key; if (num_entries < max_entries - 1) { /* link to next one */ chain[num_entries].ne_nextentry = &chain[num_entries + 1]; @@ -255,7 +256,7 @@ ep[0].ne_fileid = mp->am_gen; ep[0].ne_name = "."; ep[0].ne_nextentry = &ep[1]; - *(u_int *) ep[0].ne_cookie = 0; + memcpy(ep[0].ne_cookie, &zero, sizeof(zero)); /* construct ".." */ if (mp->am_parent) @@ -265,7 +266,7 @@ ep[1].ne_name = ".."; ep[1].ne_nextentry = NULL; - *(u_int *) ep[1].ne_cookie = DOT_DOT_COOKIE; + memcpy(ep[1].ne_cookie, &dot_dot_cookie, sizeof(dot_dot_cookie)); /* * If map is browsable, call a function make_entry_chain() to construct @@ -302,9 +303,12 @@ nfsentry *ne; for (j = 0, ne = te; ne; ne = ne->ne_nextentry) plog(XLOG_DEBUG, "gen2 key %4d \"%s\"", j++, ne->ne_name); - for (j = 0, ne = ep; ne; ne = ne->ne_nextentry) - plog(XLOG_DEBUG, "gen2+ key %4d \"%s\" fi=%d ck=%d", - j++, ne->ne_name, ne->ne_fileid, *(u_int *)ne->ne_cookie); + for (j = 0, ne = ep; ne; ne = ne->ne_nextentry) { + u_int cookie; + memcpy(&cookie, ne->ne_cookie, sizeof(cookie)); + plog(XLOG_DEBUG, "gen2+ key %4d \"%s\" fi=%d ck=%u", + j++, ne->ne_name, ne->ne_fileid, cookie); + } plog(XLOG_DEBUG, "EOF is %d", dp->dl_eof); } return 0; @@ -414,7 +418,7 @@ ep[0].ne_fileid = mp->am_gen; ep[0].ne_name = "."; ep[0].ne_nextentry = &ep[1]; - *(u_int *) ep[0].ne_cookie = 0; + memcpy(ep[0].ne_cookie, &zero, sizeof(zero)); /* construct ".." */ if (mp->am_parent) @@ -423,7 +427,8 @@ ep[1].ne_fileid = mp->am_gen; ep[1].ne_name = ".."; ep[1].ne_nextentry = NULL; - *(u_int *) ep[1].ne_cookie = (xp ? xp->am_gen : DOT_DOT_COOKIE); + memcpy(ep[1].ne_cookie, (xp ? &xp->am_gen : &dot_dot_cookie), + sizeof(dot_dot_cookie)); if (!xp) dp->dl_eof = TRUE; /* by default assume readdir done */ @@ -431,9 +436,12 @@ if (amuDebug(D_READDIR)) { nfsentry *ne; int j; - for (j = 0, ne = ep; ne; ne = ne->ne_nextentry) - plog(XLOG_DEBUG, "gen1 key %4d \"%s\" fi=%d ck=%d", - j++, ne->ne_name, ne->ne_fileid, *(u_int *)ne->ne_cookie); + for (j = 0, ne = ep; ne; ne = ne->ne_nextentry) { + u_int cookie; + memcpy(&cookie, ne->ne_cookie, sizeof(cookie)); + plog(XLOG_DEBUG, "gen1 key %4d \"%s\" fi=%d ck=%u", + j++, ne->ne_name, ne->ne_fileid, cookie); + } } return 0; } @@ -462,9 +470,9 @@ am_node *xp_next = next_nonerror_node(xp->am_osib); if (xp_next) { - *(u_int *) ep->ne_cookie = xp_next->am_gen; + memcpy(ep->ne_cookie, &xp_next->am_gen, sizeof(xp_next->am_gen)); } else { - *(u_int *) ep->ne_cookie = DOT_DOT_COOKIE; + memcpy(ep->ne_cookie, &dot_dot_cookie, sizeof(dot_dot_cookie)); dp->dl_eof = TRUE; } @@ -490,9 +498,12 @@ if (amuDebug(D_READDIR)) { nfsentry *ne; int j; - for (j=0,ne=ep; ne; ne=ne->ne_nextentry) - plog(XLOG_DEBUG, "gen2 key %4d \"%s\" fi=%d ck=%d", - j++, ne->ne_name, ne->ne_fileid, *(u_int *)ne->ne_cookie); + for (j=0,ne=ep; ne; ne=ne->ne_nextentry) { + u_int cookie; + memcpy(&cookie, ne->ne_cookie, sizeof(cookie)); + plog(XLOG_DEBUG, "gen2 key %4d \"%s\" fi=%d ck=%u", + j++, ne->ne_name, ne->ne_fileid, cookie); + } } return 0; }