| 1383 | | enc_xdr_long(mp, vp, cnt, std, siz) |
| 1384 | | struct pmsg *mp; |
| 1385 | | void *vp; |
| 1386 | | int cnt, std, siz; |
| 1387 | | { |
| 1388 | | register long *np; |
| 1389 | | int cc = 0; |
| 1390 | | |
| 1391 | | for (np = (long*)vp; cnt-- > 0; np += std) |
| 1392 | | #ifdef USE_XDR_LONGLONG |
| 1393 | | if (!xdr_longlong_t(&mp->m_xdr, np)) |
| 1394 | | #else |
| 1395 | | if (!xdr_long(&mp->m_xdr, np)) |
| 1396 | | #endif |
| 1397 | | { |
| 1398 | | #ifdef USE_XDR_LONGLONG |
| 1399 | | if ((*np & ~(long)0x7fffffffffffffff) |
| 1400 | | && (*np & ~(long)0x7fffffffffffffff) |
| 1401 | | != ~(long)0x7fffffffffffffff) |
| 1402 | | #else |
| 1403 | | if ((*np & ~(long)0x7fffffff) |
| 1404 | | && (*np & ~(long)0x7fffffff) != ~(long)0x7fffffff) |
| 1405 | | #endif |
| 1406 | | { |
| 1407 | | cc = PvmOverflow;
|
| 1408 | | break; |
| 1409 | | } |
| 1410 | | mp->m_frag->fr_rlink->fr_len = xdr_getpos(&mp->m_xdr);
|
| 1411 | | if (cc = enc_xdr_step(mp)) |
| 1412 | | break; |
| 1413 | | else |
| 1414 | | #ifdef USE_XDR_LONGLONG |
| 1415 | | if (!xdr_longlong_t(&mp->m_xdr, np)) |
| 1416 | | #else |
| 1417 | | if (!xdr_long(&mp->m_xdr, np)) |
| 1418 | | #endif |
| 1419 | | { |
| 1420 | | cc = PvmNoMem;
|
| 1421 | | break; |
| 1422 | | } |
| 1423 | | } |
| 1424 | | mp->m_frag->fr_rlink->fr_len = xdr_getpos(&mp->m_xdr);
|
| 1425 | | return cc; |
| 1426 | | } |