<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><style type="text/css"><!--
#msg dl { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre, #msg p { overflow: auto; background: #ffc; border: 1px #fc0 solid; padding: 6px; }
#msg ul { overflow: auto; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<title>[23558] trunk/launchd/src/liblaunch.c</title>
</head>
<body>

<div id="msg">
<dl>
<dt>Revision</dt> <dd><a href="http://trac.macosforge.org/projects/launchd/changeset/23558">23558</a></dd>
<dt>Author</dt> <dd>zarzycki@apple.com</dd>
<dt>Date</dt> <dd>2008-03-18 14:32:54 -0700 (Tue, 18 Mar 2008)</dd>
</dl>

<h3>Log Message</h3>
<pre>Swap the byte-order of IPC.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunklaunchdsrcliblaunchc">trunk/launchd/src/liblaunch.c</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunklaunchdsrcliblaunchc"></a>
<div class="modfile"><h4>Modified: trunk/launchd/src/liblaunch.c (23557 => 23558)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/launchd/src/liblaunch.c        2008-03-18 17:47:38 UTC (rev 23557)
+++ trunk/launchd/src/liblaunch.c        2008-03-18 21:32:54 UTC (rev 23558)
</span><span class="lines">@@ -66,17 +66,17 @@
</span><span class="cx">  */
</span><span class="cx"> extern void __OSBogusByteSwap__(void);
</span><span class="cx"> 
</span><del>-#define host2big(x)                                \
</del><ins>+#define host2wire(x)                                \
</ins><span class="cx">         ({ typeof (x) _X, _x = (x);                \
</span><span class="cx">          switch (sizeof(_x)) {                        \
</span><span class="cx">          case 8:                                \
</span><del>-                 _X = OSSwapHostToBigInt64(_x);        \
</del><ins>+                 _X = OSSwapHostToLittleInt64(_x);        \
</ins><span class="cx">                  break;                                \
</span><span class="cx">          case 4:                                \
</span><del>-                 _X = OSSwapHostToBigInt32(_x);        \
</del><ins>+                 _X = OSSwapHostToLittleInt32(_x);        \
</ins><span class="cx">                  break;                                \
</span><span class="cx">          case 2:                                \
</span><del>-                 _X = OSSwapHostToBigInt16(_x);        \
</del><ins>+                 _X = OSSwapHostToLittleInt16(_x);        \
</ins><span class="cx">                  break;                                \
</span><span class="cx">          case 1:                                \
</span><span class="cx">                  _X = _x;                        \
</span><span class="lines">@@ -89,17 +89,17 @@
</span><span class="cx">          })
</span><span class="cx"> 
</span><span class="cx"> 
</span><del>-#define big2host(x)                                \
</del><ins>+#define big2wire(x)                                \
</ins><span class="cx">         ({ typeof (x) _X, _x = (x);                \
</span><span class="cx">          switch (sizeof(_x)) {                        \
</span><span class="cx">          case 8:                                \
</span><del>-                 _X = OSSwapBigToHostInt64(_x);        \
</del><ins>+                 _X = OSSwapLittleToHostInt64(_x);        \
</ins><span class="cx">                  break;                                \
</span><span class="cx">          case 4:                                \
</span><del>-                 _X = OSSwapBigToHostInt32(_x);        \
</del><ins>+                 _X = OSSwapLittleToHostInt32(_x);        \
</ins><span class="cx">                  break;                                \
</span><span class="cx">          case 2:                                \
</span><del>-                 _X = OSSwapBigToHostInt16(_x);        \
</del><ins>+                 _X = OSSwapLittleToHostInt16(_x);        \
</ins><span class="cx">                  break;                                \
</span><span class="cx">          case 1:                                \
</span><span class="cx">                  _X = _x;                        \
</span><span class="lines">@@ -612,30 +612,30 @@
</span><span class="cx"> 
</span><span class="cx">         where += total_data_len;
</span><span class="cx"> 
</span><del>-        o_in_w-&gt;type = host2big(d-&gt;type);
</del><ins>+        o_in_w-&gt;type = host2wire(d-&gt;type);
</ins><span class="cx"> 
</span><span class="cx">         switch (d-&gt;type) {
</span><span class="cx">         case LAUNCH_DATA_INTEGER:
</span><del>-                o_in_w-&gt;number = host2big(d-&gt;number);
</del><ins>+                o_in_w-&gt;number = host2wire(d-&gt;number);
</ins><span class="cx">                 break;
</span><span class="cx">         case LAUNCH_DATA_REAL:
</span><del>-                o_in_w-&gt;float_num = host2big(d-&gt;float_num);
</del><ins>+                o_in_w-&gt;float_num = host2wire(d-&gt;float_num);
</ins><span class="cx">                 break;
</span><span class="cx">         case LAUNCH_DATA_BOOL:
</span><del>-                o_in_w-&gt;boolean = host2big(d-&gt;boolean);
</del><ins>+                o_in_w-&gt;boolean = host2wire(d-&gt;boolean);
</ins><span class="cx">                 break;
</span><span class="cx">         case LAUNCH_DATA_ERRNO:
</span><del>-                o_in_w-&gt;err = host2big(d-&gt;err);
</del><ins>+                o_in_w-&gt;err = host2wire(d-&gt;err);
</ins><span class="cx">                 break;
</span><span class="cx">         case LAUNCH_DATA_FD:
</span><del>-                o_in_w-&gt;fd = host2big(d-&gt;fd);
</del><ins>+                o_in_w-&gt;fd = host2wire(d-&gt;fd);
</ins><span class="cx">                 if (fd_where &amp;&amp; d-&gt;fd != -1) {
</span><span class="cx">                         fd_where[*fd_cnt] = d-&gt;fd;
</span><span class="cx">                         (*fd_cnt)++;
</span><span class="cx">                 }
</span><span class="cx">                 break;
</span><span class="cx">         case LAUNCH_DATA_STRING:
</span><del>-                o_in_w-&gt;string_len = host2big(d-&gt;string_len);
</del><ins>+                o_in_w-&gt;string_len = host2wire(d-&gt;string_len);
</ins><span class="cx">                 total_data_len += ROUND_TO_64BIT_WORD_SIZE(strlen(d-&gt;string) + 1);
</span><span class="cx">                 if (total_data_len &gt; len) {
</span><span class="cx">                         return 0;
</span><span class="lines">@@ -643,7 +643,7 @@
</span><span class="cx">                 memcpy(where, d-&gt;string, strlen(d-&gt;string) + 1);
</span><span class="cx">                 break;
</span><span class="cx">         case LAUNCH_DATA_OPAQUE:
</span><del>-                o_in_w-&gt;opaque_size = host2big(d-&gt;opaque_size);
</del><ins>+                o_in_w-&gt;opaque_size = host2wire(d-&gt;opaque_size);
</ins><span class="cx">                 total_data_len += ROUND_TO_64BIT_WORD_SIZE(d-&gt;opaque_size);
</span><span class="cx">                 if (total_data_len &gt; len) {
</span><span class="cx">                         return 0;
</span><span class="lines">@@ -652,7 +652,7 @@
</span><span class="cx">                 break;
</span><span class="cx">         case LAUNCH_DATA_DICTIONARY:
</span><span class="cx">         case LAUNCH_DATA_ARRAY:
</span><del>-                o_in_w-&gt;_array_cnt = host2big(d-&gt;_array_cnt);
</del><ins>+                o_in_w-&gt;_array_cnt = host2wire(d-&gt;_array_cnt);
</ins><span class="cx">                 total_data_len += d-&gt;_array_cnt * sizeof(uint64_t);
</span><span class="cx">                 if (total_data_len &gt; len) {
</span><span class="cx">                         return 0;
</span><span class="lines">@@ -686,10 +686,10 @@
</span><span class="cx">                 return NULL;
</span><span class="cx">         *data_offset += sizeof(struct _launch_data);
</span><span class="cx"> 
</span><del>-        switch (big2host(r-&gt;type)) {
</del><ins>+        switch (big2wire(r-&gt;type)) {
</ins><span class="cx">         case LAUNCH_DATA_DICTIONARY:
</span><span class="cx">         case LAUNCH_DATA_ARRAY:
</span><del>-                tmpcnt = big2host(r-&gt;_array_cnt);
</del><ins>+                tmpcnt = big2wire(r-&gt;_array_cnt);
</ins><span class="cx">                 if ((data_size - *data_offset) &lt; (tmpcnt * sizeof(uint64_t))) {
</span><span class="cx">                         errno = EAGAIN;
</span><span class="cx">                         return NULL;
</span><span class="lines">@@ -704,7 +704,7 @@
</span><span class="cx">                 r-&gt;_array_cnt = tmpcnt;
</span><span class="cx">                 break;
</span><span class="cx">         case LAUNCH_DATA_STRING:
</span><del>-                tmpcnt = big2host(r-&gt;string_len);
</del><ins>+                tmpcnt = big2wire(r-&gt;string_len);
</ins><span class="cx">                 if ((data_size - *data_offset) &lt; (tmpcnt + 1)) {
</span><span class="cx">                         errno = EAGAIN;
</span><span class="cx">                         return NULL;
</span><span class="lines">@@ -714,7 +714,7 @@
</span><span class="cx">                 *data_offset += ROUND_TO_64BIT_WORD_SIZE(tmpcnt + 1);
</span><span class="cx">                 break;
</span><span class="cx">         case LAUNCH_DATA_OPAQUE:
</span><del>-                tmpcnt = big2host(r-&gt;opaque_size);
</del><ins>+                tmpcnt = big2wire(r-&gt;opaque_size);
</ins><span class="cx">                 if ((data_size - *data_offset) &lt; tmpcnt) {
</span><span class="cx">                         errno = EAGAIN;
</span><span class="cx">                         return NULL;
</span><span class="lines">@@ -730,16 +730,16 @@
</span><span class="cx">                 }
</span><span class="cx">                 break;
</span><span class="cx">         case LAUNCH_DATA_INTEGER:
</span><del>-                r-&gt;number = big2host(r-&gt;number);
</del><ins>+                r-&gt;number = big2wire(r-&gt;number);
</ins><span class="cx">                 break;
</span><span class="cx">         case LAUNCH_DATA_REAL:
</span><del>-                r-&gt;float_num = big2host(r-&gt;float_num);
</del><ins>+                r-&gt;float_num = big2wire(r-&gt;float_num);
</ins><span class="cx">                 break;
</span><span class="cx">         case LAUNCH_DATA_BOOL:
</span><del>-                r-&gt;boolean = big2host(r-&gt;boolean);
</del><ins>+                r-&gt;boolean = big2wire(r-&gt;boolean);
</ins><span class="cx">                 break;
</span><span class="cx">         case LAUNCH_DATA_ERRNO:
</span><del>-                r-&gt;err = big2host(r-&gt;err);
</del><ins>+                r-&gt;err = big2wire(r-&gt;err);
</ins><span class="cx">         case LAUNCH_DATA_MACHPORT:
</span><span class="cx">                 break;
</span><span class="cx">         default:
</span><span class="lines">@@ -748,7 +748,7 @@
</span><span class="cx">                 break;
</span><span class="cx">         }
</span><span class="cx"> 
</span><del>-        r-&gt;type = big2host(r-&gt;type);
</del><ins>+        r-&gt;type = big2wire(r-&gt;type);
</ins><span class="cx"> 
</span><span class="cx">         return r;
</span><span class="cx"> }
</span><span class="lines">@@ -788,9 +788,9 @@
</span><span class="cx"> 
</span><span class="cx">                 lh-&gt;sendfdcnt = fd_slots_used;
</span><span class="cx"> 
</span><del>-                msglen = lh-&gt;sendlen + sizeof(struct launch_msg_header); /* type promotion to make the host2big() macro work right */
-                lmh.len = host2big(msglen);
-                lmh.magic = host2big(LAUNCH_MSG_HEADER_MAGIC);
</del><ins>+                msglen = lh-&gt;sendlen + sizeof(struct launch_msg_header); /* type promotion to make the host2wire() macro work right */
+                lmh.len = host2wire(msglen);
+                lmh.magic = host2wire(LAUNCH_MSG_HEADER_MAGIC);
</ins><span class="cx"> 
</span><span class="cx">                 iov[0].iov_base = &amp;lmh;
</span><span class="cx">                 iov[0].iov_len = sizeof(lmh);
</span><span class="lines">@@ -1019,9 +1019,9 @@
</span><span class="cx">                 if (lh-&gt;recvlen &lt; sizeof(struct launch_msg_header))
</span><span class="cx">                         goto need_more_data;
</span><span class="cx"> 
</span><del>-                tmplen = big2host(lmhp-&gt;len);
</del><ins>+                tmplen = big2wire(lmhp-&gt;len);
</ins><span class="cx"> 
</span><del>-                if (big2host(lmhp-&gt;magic) != LAUNCH_MSG_HEADER_MAGIC || tmplen &lt;= sizeof(struct launch_msg_header)) {
</del><ins>+                if (big2wire(lmhp-&gt;magic) != LAUNCH_MSG_HEADER_MAGIC || tmplen &lt;= sizeof(struct launch_msg_header)) {
</ins><span class="cx">                         errno = EBADRPC;
</span><span class="cx">                         goto out_bad;
</span><span class="cx">                 }
</span></span></pre>
</div>
</div>

</body>
</html>