summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-reader/chm_lib.c5
-rw-r--r--noncore/settings/sysinfo/contrib/dhry.c4
2 files changed, 5 insertions, 4 deletions
diff --git a/noncore/apps/opie-reader/chm_lib.c b/noncore/apps/opie-reader/chm_lib.c
index ecf8278..7acd1d2 100644
--- a/noncore/apps/opie-reader/chm_lib.c
+++ b/noncore/apps/opie-reader/chm_lib.c
@@ -1507,263 +1507,264 @@ int chm_enumerate(struct chmFile *h,
1507 /* try to fetch the index page */ 1507 /* try to fetch the index page */
1508 if (_chm_fetch_bytes(h, 1508 if (_chm_fetch_bytes(h,
1509 page_buf, 1509 page_buf,
1510 (UInt64)h->dir_offset + (UInt64)curPage*h->block_len, 1510 (UInt64)h->dir_offset + (UInt64)curPage*h->block_len,
1511 h->block_len) != h->block_len) 1511 h->block_len) != h->block_len)
1512 return 0; 1512 return 0;
1513 1513
1514 /* figure out start and end for this page */ 1514 /* figure out start and end for this page */
1515 cur = page_buf; 1515 cur = page_buf;
1516 lenRemain = _CHM_PMGL_LEN; 1516 lenRemain = _CHM_PMGL_LEN;
1517 if (! _unmarshal_pmgl_header(&cur, &lenRemain, &header)) 1517 if (! _unmarshal_pmgl_header(&cur, &lenRemain, &header))
1518 return 0; 1518 return 0;
1519 end = page_buf + h->block_len - (header.free_space); 1519 end = page_buf + h->block_len - (header.free_space);
1520 1520
1521 /* loop over this page */ 1521 /* loop over this page */
1522 while (cur < end) 1522 while (cur < end)
1523 { 1523 {
1524 if (! _chm_parse_PMGL_entry(&cur, &ui)) 1524 if (! _chm_parse_PMGL_entry(&cur, &ui))
1525 return 0; 1525 return 0;
1526 1526
1527 /* check for DIRS */ 1527 /* check for DIRS */
1528 if (ui.length == 0 && !(what & CHM_ENUMERATE_DIRS)) 1528 if (ui.length == 0 && !(what & CHM_ENUMERATE_DIRS))
1529 continue; 1529 continue;
1530 1530
1531 /* check for FILES */ 1531 /* check for FILES */
1532 if (ui.length != 0 && !(what & CHM_ENUMERATE_FILES)) 1532 if (ui.length != 0 && !(what & CHM_ENUMERATE_FILES))
1533 continue; 1533 continue;
1534 1534
1535 /* check for NORMAL vs. META */ 1535 /* check for NORMAL vs. META */
1536 if (ui.path[0] == '/') 1536 if (ui.path[0] == '/')
1537 { 1537 {
1538 1538
1539 /* check for NORMAL vs. SPECIAL */ 1539 /* check for NORMAL vs. SPECIAL */
1540 if (ui.path[1] == '#' || ui.path[1] == '$') 1540 if (ui.path[1] == '#' || ui.path[1] == '$')
1541 flag = CHM_ENUMERATE_SPECIAL; 1541 flag = CHM_ENUMERATE_SPECIAL;
1542 else 1542 else
1543 flag = CHM_ENUMERATE_NORMAL; 1543 flag = CHM_ENUMERATE_NORMAL;
1544 } 1544 }
1545 else 1545 else
1546 flag = CHM_ENUMERATE_META; 1546 flag = CHM_ENUMERATE_META;
1547 if (! (what & flag)) 1547 if (! (what & flag))
1548 continue; 1548 continue;
1549 1549
1550 /* call the enumerator */ 1550 /* call the enumerator */
1551 { 1551 {
1552 int status = (*e)(h, &ui, context); 1552 int status = (*e)(h, &ui, context);
1553 switch (status) 1553 switch (status)
1554 { 1554 {
1555 case CHM_ENUMERATOR_FAILURE: return 0; 1555 case CHM_ENUMERATOR_FAILURE: return 0;
1556 case CHM_ENUMERATOR_CONTINUE: break; 1556 case CHM_ENUMERATOR_CONTINUE: break;
1557 case CHM_ENUMERATOR_SUCCESS: return 1; 1557 case CHM_ENUMERATOR_SUCCESS: return 1;
1558 default: break; 1558 default: break;
1559 } 1559 }
1560 } 1560 }
1561 } 1561 }
1562 1562
1563 /* advance to next page */ 1563 /* advance to next page */
1564 curPage = header.block_next; 1564 curPage = header.block_next;
1565 } 1565 }
1566 1566
1567 return 1; 1567 return 1;
1568} 1568}
1569 1569
1570int chm_enumerate_dir(struct chmFile *h, 1570int chm_enumerate_dir(struct chmFile *h,
1571 const char *prefix, 1571 const char *prefix,
1572 int what, 1572 int what,
1573 CHM_ENUMERATOR e, 1573 CHM_ENUMERATOR e,
1574 void *context) 1574 void *context)
1575{ 1575{
1576 /* 1576 /*
1577 * XXX: do this efficiently (i.e. using the tree index) 1577 * XXX: do this efficiently (i.e. using the tree index)
1578 */ 1578 */
1579 1579
1580 Int32 curPage; 1580 Int32 curPage;
1581 1581
1582 /* buffer to hold whatever page we're looking at */ 1582 /* buffer to hold whatever page we're looking at */
1583#ifdef WIN32 1583#ifdef WIN32
1584 UChar *page_buf = alloca((unsigned int)h->block_len); 1584 UChar *page_buf = alloca((unsigned int)h->block_len);
1585#else 1585#else
1586 UChar page_buf[h->block_len]; 1586 UChar page_buf[h->block_len];
1587#endif 1587#endif
1588 struct chmPmglHeader header; 1588 struct chmPmglHeader header;
1589 UChar *end; 1589 UChar *end;
1590 UChar *cur; 1590 UChar *cur;
1591 unsigned long lenRemain; 1591 unsigned long lenRemain;
1592 1592
1593 /* set to 1 once we've started */ 1593 /* set to 1 once we've started */
1594 int it_has_begun=0; 1594 int it_has_begun=0;
1595 1595
1596 /* the current ui */ 1596 /* the current ui */
1597 struct chmUnitInfo ui; 1597 struct chmUnitInfo ui;
1598 int flag; 1598 int flag;
1599 1599
1600 /* the length of the prefix */ 1600 /* the length of the prefix */
1601 char prefixRectified[CHM_MAX_PATHLEN+1]; 1601 char prefixRectified[CHM_MAX_PATHLEN+1];
1602 int prefixLen; 1602 int prefixLen;
1603 char lastPath[CHM_MAX_PATHLEN]; 1603 char lastPath[CHM_MAX_PATHLEN+1];
1604 int lastPathLen; 1604 int lastPathLen;
1605 1605
1606 /* starting page */ 1606 /* starting page */
1607 curPage = h->index_head; 1607 curPage = h->index_head;
1608 1608
1609 /* initialize pathname state */ 1609 /* initialize pathname state */
1610 strncpy(prefixRectified, prefix, CHM_MAX_PATHLEN); 1610 strncpy(prefixRectified, prefix, CHM_MAX_PATHLEN);
1611 prefixLen = strlen(prefixRectified); 1611 prefixLen = strlen(prefixRectified);
1612 if (prefixLen != 0) 1612 if (prefixLen != 0)
1613 { 1613 {
1614 if (prefixRectified[prefixLen-1] != '/') 1614 if (prefixRectified[prefixLen-1] != '/')
1615 { 1615 {
1616 prefixRectified[prefixLen] = '/'; 1616 prefixRectified[prefixLen] = '/';
1617 prefixRectified[prefixLen+1] = '\0'; 1617 prefixRectified[prefixLen+1] = '\0';
1618 ++prefixLen; 1618 ++prefixLen;
1619 } 1619 }
1620 } 1620 }
1621 lastPath[0] = '\0'; 1621 lastPath[0] = '\0';
1622 lastPathLen = -1; 1622 lastPathLen = -1;
1623 1623
1624 /* until we have either returned or given up */ 1624 /* until we have either returned or given up */
1625 while (curPage != -1) 1625 while (curPage != -1)
1626 { 1626 {
1627 1627
1628 /* try to fetch the index page */ 1628 /* try to fetch the index page */
1629 if (_chm_fetch_bytes(h, 1629 if (_chm_fetch_bytes(h,
1630 page_buf, 1630 page_buf,
1631 (UInt64)h->dir_offset + (UInt64)curPage*h->block_len, 1631 (UInt64)h->dir_offset + (UInt64)curPage*h->block_len,
1632 h->block_len) != h->block_len) 1632 h->block_len) != h->block_len)
1633 return 0; 1633 return 0;
1634 1634
1635 /* figure out start and end for this page */ 1635 /* figure out start and end for this page */
1636 cur = page_buf; 1636 cur = page_buf;
1637 lenRemain = _CHM_PMGL_LEN; 1637 lenRemain = _CHM_PMGL_LEN;
1638 if (! _unmarshal_pmgl_header(&cur, &lenRemain, &header)) 1638 if (! _unmarshal_pmgl_header(&cur, &lenRemain, &header))
1639 return 0; 1639 return 0;
1640 end = page_buf + h->block_len - (header.free_space); 1640 end = page_buf + h->block_len - (header.free_space);
1641 1641
1642 /* loop over this page */ 1642 /* loop over this page */
1643 while (cur < end) 1643 while (cur < end)
1644 { 1644 {
1645 if (! _chm_parse_PMGL_entry(&cur, &ui)) 1645 if (! _chm_parse_PMGL_entry(&cur, &ui))
1646 return 0; 1646 return 0;
1647 1647
1648 /* check if we should start */ 1648 /* check if we should start */
1649 if (! it_has_begun) 1649 if (! it_has_begun)
1650 { 1650 {
1651 if (ui.length == 0 && strncmp(ui.path, prefixRectified, prefixLen) == 0) 1651 if (ui.length == 0 && strncmp(ui.path, prefixRectified, prefixLen) == 0)
1652 it_has_begun = 1; 1652 it_has_begun = 1;
1653 else 1653 else
1654 continue; 1654 continue;
1655 1655
1656 if (ui.path[prefixLen] == '\0') 1656 if (ui.path[prefixLen] == '\0')
1657 continue; 1657 continue;
1658 } 1658 }
1659 1659
1660 /* check if we should stop */ 1660 /* check if we should stop */
1661 else 1661 else
1662 { 1662 {
1663 if (strncmp(ui.path, prefixRectified, prefixLen) != 0) 1663 if (strncmp(ui.path, prefixRectified, prefixLen) != 0)
1664 return 1; 1664 return 1;
1665 } 1665 }
1666 1666
1667 /* check if we should include this path */ 1667 /* check if we should include this path */
1668 if (lastPathLen != -1) 1668 if (lastPathLen != -1)
1669 { 1669 {
1670 if (strncmp(ui.path, lastPath, lastPathLen) == 0) 1670 if (strncmp(ui.path, lastPath, lastPathLen) == 0)
1671 continue; 1671 continue;
1672 } 1672 }
1673 strcpy(lastPath, ui.path); 1673 strncpy(lastPath, ui.path, CHM_MAX_PATHLEN);
1674 lastPath[CHM_MAX_PATHLEN] = '\0';
1674 lastPathLen = strlen(lastPath); 1675 lastPathLen = strlen(lastPath);
1675 1676
1676 /* check for DIRS */ 1677 /* check for DIRS */
1677 if (ui.length == 0 && !(what & CHM_ENUMERATE_DIRS)) 1678 if (ui.length == 0 && !(what & CHM_ENUMERATE_DIRS))
1678 continue; 1679 continue;
1679 1680
1680 /* check for FILES */ 1681 /* check for FILES */
1681 if (ui.length != 0 && !(what & CHM_ENUMERATE_FILES)) 1682 if (ui.length != 0 && !(what & CHM_ENUMERATE_FILES))
1682 continue; 1683 continue;
1683 1684
1684 /* check for NORMAL vs. META */ 1685 /* check for NORMAL vs. META */
1685 if (ui.path[0] == '/') 1686 if (ui.path[0] == '/')
1686 { 1687 {
1687 1688
1688 /* check for NORMAL vs. SPECIAL */ 1689 /* check for NORMAL vs. SPECIAL */
1689 if (ui.path[1] == '#' || ui.path[1] == '$') 1690 if (ui.path[1] == '#' || ui.path[1] == '$')
1690 flag = CHM_ENUMERATE_SPECIAL; 1691 flag = CHM_ENUMERATE_SPECIAL;
1691 else 1692 else
1692 flag = CHM_ENUMERATE_NORMAL; 1693 flag = CHM_ENUMERATE_NORMAL;
1693 } 1694 }
1694 else 1695 else
1695 flag = CHM_ENUMERATE_META; 1696 flag = CHM_ENUMERATE_META;
1696 if (! (what & flag)) 1697 if (! (what & flag))
1697 continue; 1698 continue;
1698 1699
1699 /* call the enumerator */ 1700 /* call the enumerator */
1700 { 1701 {
1701 int status = (*e)(h, &ui, context); 1702 int status = (*e)(h, &ui, context);
1702 switch (status) 1703 switch (status)
1703 { 1704 {
1704 case CHM_ENUMERATOR_FAILURE: return 0; 1705 case CHM_ENUMERATOR_FAILURE: return 0;
1705 case CHM_ENUMERATOR_CONTINUE: break; 1706 case CHM_ENUMERATOR_CONTINUE: break;
1706 case CHM_ENUMERATOR_SUCCESS: return 1; 1707 case CHM_ENUMERATOR_SUCCESS: return 1;
1707 default: break; 1708 default: break;
1708 } 1709 }
1709 } 1710 }
1710 } 1711 }
1711 1712
1712 /* advance to next page */ 1713 /* advance to next page */
1713 curPage = header.block_next; 1714 curPage = header.block_next;
1714 } 1715 }
1715 1716
1716 return 1; 1717 return 1;
1717} 1718}
1718 1719
1719/* resolve a particular object from the archive */ 1720/* resolve a particular object from the archive */
1720int chm_resolve_location(struct chmFile *h, 1721int chm_resolve_location(struct chmFile *h,
1721 unsigned long pos, 1722 unsigned long pos,
1722 struct chmUnitInfo *ui) 1723 struct chmUnitInfo *ui)
1723{ 1724{
1724 /* 1725 /*
1725 * XXX: implement caching scheme for dir pages 1726 * XXX: implement caching scheme for dir pages
1726 */ 1727 */
1727 1728
1728 Int32 curPage; 1729 Int32 curPage;
1729 1730
1730 /* buffer to hold whatever page we're looking at */ 1731 /* buffer to hold whatever page we're looking at */
1731#ifdef WIN32 1732#ifdef WIN32
1732 UChar *page_buf = alloca(h->block_len); 1733 UChar *page_buf = alloca(h->block_len);
1733#else 1734#else
1734 UChar page_buf[h->block_len]; 1735 UChar page_buf[h->block_len];
1735#endif 1736#endif
1736 1737
1737 /* starting page */ 1738 /* starting page */
1738 curPage = h->index_root; 1739 curPage = h->index_root;
1739 1740
1740 /* until we have either returned or given up */ 1741 /* until we have either returned or given up */
1741 while (curPage != -1) 1742 while (curPage != -1)
1742 { 1743 {
1743 1744
1744 /* try to fetch the index page */ 1745 /* try to fetch the index page */
1745 if (_chm_fetch_bytes(h, page_buf, 1746 if (_chm_fetch_bytes(h, page_buf,
1746 (UInt64)h->dir_offset + (UInt64)curPage*h->block_len, 1747 (UInt64)h->dir_offset + (UInt64)curPage*h->block_len,
1747 h->block_len) != h->block_len) 1748 h->block_len) != h->block_len)
1748 return CHM_RESOLVE_FAILURE; 1749 return CHM_RESOLVE_FAILURE;
1749 1750
1750 /* now, if it is a leaf node: */ 1751 /* now, if it is a leaf node: */
1751 if (memcmp(page_buf, _chm_pmgl_marker, 4) == 0) 1752 if (memcmp(page_buf, _chm_pmgl_marker, 4) == 0)
1752 { 1753 {
1753 /* scan block */ 1754 /* scan block */
1754 /* UChar *pEntry = _chm_find_in_PMGL(page_buf, h->block_len, objPath);*/ 1755 /* UChar *pEntry = _chm_find_in_PMGL(page_buf, h->block_len, objPath);*/
1755 { 1756 {
1756 /* XXX: modify this to do a binary search using the nice index structure 1757 /* XXX: modify this to do a binary search using the nice index structure
1757 * that is provided for us. 1758 * that is provided for us.
1758 */ 1759 */
1759 struct chmPmglHeader header; 1760 struct chmPmglHeader header;
1760 UInt32 hremain; 1761 UInt32 hremain;
1761 UChar *end; 1762 UChar *end;
1762 UChar *cur; 1763 UChar *cur;
1763 UChar *temp; 1764 UChar *temp;
1764/* 1765/*
1765 UInt64 strLen; 1766 UInt64 strLen;
1766 char buffer[CHM_MAX_PATHLEN+1]; 1767 char buffer[CHM_MAX_PATHLEN+1];
1767*/ 1768*/
1768 /* figure out where to start and end */ 1769 /* figure out where to start and end */
1769 cur = page_buf; 1770 cur = page_buf;
diff --git a/noncore/settings/sysinfo/contrib/dhry.c b/noncore/settings/sysinfo/contrib/dhry.c
index 20b627c..07fd1c0 100644
--- a/noncore/settings/sysinfo/contrib/dhry.c
+++ b/noncore/settings/sysinfo/contrib/dhry.c
@@ -402,193 +402,193 @@ double dtime()
402/************************************************/ 402/************************************************/
403#ifdef POSIX 403#ifdef POSIX
404#include <sys/time.h> 404#include <sys/time.h>
405#include <sys/resource.h> 405#include <sys/resource.h>
406#include <sys/rusage.h> 406#include <sys/rusage.h>
407 407
408#ifdef __hpux 408#ifdef __hpux
409#include <sys/syscall.h> 409#include <sys/syscall.h>
410#endif 410#endif
411 411
412struct rusage rusage; 412struct rusage rusage;
413 413
414double dtime() 414double dtime()
415{ 415{
416 double q; 416 double q;
417 417
418 getrusage(RUSAGE_SELF,&rusage); 418 getrusage(RUSAGE_SELF,&rusage);
419 419
420 q = (double)(rusage.ru_utime.tv_sec); 420 q = (double)(rusage.ru_utime.tv_sec);
421 q = q + (double)(rusage.ru_utime.tv_nsec) * 1.0e-09; 421 q = q + (double)(rusage.ru_utime.tv_nsec) * 1.0e-09;
422 422
423 return q; 423 return q;
424} 424}
425#endif 425#endif
426 426
427 427
428/****************************************************/ 428/****************************************************/
429/* Windows NT (32 bit) dtime() routine */ 429/* Windows NT (32 bit) dtime() routine */
430/* Provided by: Piers Haken, piersh@microsoft.com */ 430/* Provided by: Piers Haken, piersh@microsoft.com */
431/****************************************************/ 431/****************************************************/
432#ifdef WIN32 432#ifdef WIN32
433#include <windows.h> 433#include <windows.h>
434 434
435double dtime(void) 435double dtime(void)
436{ 436{
437 double q; 437 double q;
438 438
439 q = (double)GetTickCount() * 1.0e-03; 439 q = (double)GetTickCount() * 1.0e-03;
440 440
441 return q; 441 return q;
442} 442}
443#endif 443#endif
444 444
445/*****************************************************/ 445/*****************************************************/
446/* Time according to POSIX.1 - <J.Pelan@qub.ac.uk> */ 446/* Time according to POSIX.1 - <J.Pelan@qub.ac.uk> */
447/* Ref: "POSIX Programmer's Guide" O'Reilly & Assoc.*/ 447/* Ref: "POSIX Programmer's Guide" O'Reilly & Assoc.*/
448/*****************************************************/ 448/*****************************************************/
449#ifdef POSIX1 449#ifdef POSIX1
450#define _POSIX_SOURCE 1 450#define _POSIX_SOURCE 1
451#include <unistd.h> 451#include <unistd.h>
452#include <limits.h> 452#include <limits.h>
453#include <sys/times.h> 453#include <sys/times.h>
454 454
455struct tms tms; 455struct tms tms;
456 456
457double dtime() 457double dtime()
458{ 458{
459 double q; 459 double q;
460 times(&tms); 460 times(&tms);
461 q = (double)tms.tms_utime / (double)CLK_TCK; 461 q = (double)tms.tms_utime / (double)CLK_TCK;
462 return q; 462 return q;
463} 463}
464#endif 464#endif
465/* 465/*
466 ************************************************************************* 466 *************************************************************************
467 * 467 *
468 * "DHRYSTONE" Benchmark Program 468 * "DHRYSTONE" Benchmark Program
469 * ----------------------------- 469 * -----------------------------
470 * 470 *
471 * Version: C, Version 2.1 471 * Version: C, Version 2.1
472 * 472 *
473 * File: dhry_1.c (part 2 of 3) 473 * File: dhry_1.c (part 2 of 3)
474 * 474 *
475 * Date: May 25, 1988 475 * Date: May 25, 1988
476 * 476 *
477 * Author: Reinhold P. Weicker 477 * Author: Reinhold P. Weicker
478 * 478 *
479 ************************************************************************* 479 *************************************************************************
480 */ 480 */
481 481
482#include <stdio.h> 482#include <stdio.h>
483#include <stdlib.h> 483#include <stdlib.h>
484#include <string.h> 484#include <string.h>
485#include "dhry.h" 485#include "dhry.h"
486 486
487/* Global Variables: */ 487/* Global Variables: */
488 488
489Rec_Pointer Ptr_Glob, 489Rec_Pointer Ptr_Glob,
490 Next_Ptr_Glob; 490 Next_Ptr_Glob;
491int Int_Glob; 491int Int_Glob;
492Boolean Bool_Glob; 492Boolean Bool_Glob;
493char Ch_1_Glob, 493char Ch_1_Glob,
494 Ch_2_Glob; 494 Ch_2_Glob;
495int Arr_1_Glob [50]; 495int Arr_1_Glob [50];
496int Arr_2_Glob [50] [50]; 496int Arr_2_Glob [50] [50];
497 497
498char Reg_Define[] = "Register option selected."; 498char Reg_Define[32] = "Register option selected.";
499 499
500//extern char *malloc (); 500//extern char *malloc ();
501Enumeration Func_1 (); 501Enumeration Func_1 ();
502 /* 502 /*
503 forward declaration necessary since Enumeration may not simply be int 503 forward declaration necessary since Enumeration may not simply be int
504 */ 504 */
505 505
506#ifndef ROPT 506#ifndef ROPT
507#define REG 507#define REG
508 /* REG becomes defined as empty */ 508 /* REG becomes defined as empty */
509 /* i.e. no register variables */ 509 /* i.e. no register variables */
510#else 510#else
511#define REG register 511#define REG register
512#endif 512#endif
513 513
514 514
515/* variables for time measurement: */ 515/* variables for time measurement: */
516 516
517#define Too_Small_Time 2 517#define Too_Small_Time 2
518 /* Measurements should last at least 2 seconds */ 518 /* Measurements should last at least 2 seconds */
519 519
520double Begin_Time, 520double Begin_Time,
521 End_Time, 521 End_Time,
522 User_Time; 522 User_Time;
523 523
524double Microseconds, 524double Microseconds,
525 Dhrystones_Per_Second, 525 Dhrystones_Per_Second,
526 Vax_Mips; 526 Vax_Mips;
527 527
528/* end of variables for time measurement */ 528/* end of variables for time measurement */
529 529
530/**********************************************************************************************/ 530/**********************************************************************************************/
531 531
532 532
533Proc_1 (Ptr_Val_Par) 533Proc_1 (Ptr_Val_Par)
534/******************/ 534/******************/
535 535
536REG Rec_Pointer Ptr_Val_Par; 536REG Rec_Pointer Ptr_Val_Par;
537 /* executed once */ 537 /* executed once */
538{ 538{
539 REG Rec_Pointer Next_Record = Ptr_Val_Par->Ptr_Comp; 539 REG Rec_Pointer Next_Record = Ptr_Val_Par->Ptr_Comp;
540 /* == Ptr_Glob_Next */ 540 /* == Ptr_Glob_Next */
541 /* Local variable, initialized with Ptr_Val_Par->Ptr_Comp, */ 541 /* Local variable, initialized with Ptr_Val_Par->Ptr_Comp, */
542 /* corresponds to "rename" in Ada, "with" in Pascal */ 542 /* corresponds to "rename" in Ada, "with" in Pascal */
543 543
544 structassign (*Ptr_Val_Par->Ptr_Comp, *Ptr_Glob); 544 structassign (*Ptr_Val_Par->Ptr_Comp, *Ptr_Glob);
545 Ptr_Val_Par->variant.var_1.Int_Comp = 5; 545 Ptr_Val_Par->variant.var_1.Int_Comp = 5;
546 Next_Record->variant.var_1.Int_Comp 546 Next_Record->variant.var_1.Int_Comp
547 = Ptr_Val_Par->variant.var_1.Int_Comp; 547 = Ptr_Val_Par->variant.var_1.Int_Comp;
548 Next_Record->Ptr_Comp = Ptr_Val_Par->Ptr_Comp; 548 Next_Record->Ptr_Comp = Ptr_Val_Par->Ptr_Comp;
549 Proc_3 (&Next_Record->Ptr_Comp); 549 Proc_3 (&Next_Record->Ptr_Comp);
550 /* Ptr_Val_Par->Ptr_Comp->Ptr_Comp 550 /* Ptr_Val_Par->Ptr_Comp->Ptr_Comp
551 == Ptr_Glob->Ptr_Comp */ 551 == Ptr_Glob->Ptr_Comp */
552 if (Next_Record->Discr == Ident_1) 552 if (Next_Record->Discr == Ident_1)
553 /* then, executed */ 553 /* then, executed */
554 { 554 {
555 Next_Record->variant.var_1.Int_Comp = 6; 555 Next_Record->variant.var_1.Int_Comp = 6;
556 Proc_6 (Ptr_Val_Par->variant.var_1.Enum_Comp, 556 Proc_6 (Ptr_Val_Par->variant.var_1.Enum_Comp,
557 &Next_Record->variant.var_1.Enum_Comp); 557 &Next_Record->variant.var_1.Enum_Comp);
558 Next_Record->Ptr_Comp = Ptr_Glob->Ptr_Comp; 558 Next_Record->Ptr_Comp = Ptr_Glob->Ptr_Comp;
559 Proc_7 (Next_Record->variant.var_1.Int_Comp, 10, 559 Proc_7 (Next_Record->variant.var_1.Int_Comp, 10,
560 &Next_Record->variant.var_1.Int_Comp); 560 &Next_Record->variant.var_1.Int_Comp);
561 } 561 }
562 else /* not executed */ 562 else /* not executed */
563 structassign (*Ptr_Val_Par, *Ptr_Val_Par->Ptr_Comp); 563 structassign (*Ptr_Val_Par, *Ptr_Val_Par->Ptr_Comp);
564} /* Proc_1 */ 564} /* Proc_1 */
565 565
566 566
567Proc_2 (Int_Par_Ref) 567Proc_2 (Int_Par_Ref)
568/******************/ 568/******************/
569 /* executed once */ 569 /* executed once */
570 /* *Int_Par_Ref == 1, becomes 4 */ 570 /* *Int_Par_Ref == 1, becomes 4 */
571 571
572One_Fifty *Int_Par_Ref; 572One_Fifty *Int_Par_Ref;
573{ 573{
574 One_Fifty Int_Loc; 574 One_Fifty Int_Loc;
575 Enumeration Enum_Loc; 575 Enumeration Enum_Loc;
576 576
577 Int_Loc = *Int_Par_Ref + 10; 577 Int_Loc = *Int_Par_Ref + 10;
578 do /* executed once */ 578 do /* executed once */
579 if (Ch_1_Glob == 'A') 579 if (Ch_1_Glob == 'A')
580 /* then, executed */ 580 /* then, executed */
581 { 581 {
582 Int_Loc -= 1; 582 Int_Loc -= 1;
583 *Int_Par_Ref = Int_Loc - Int_Glob; 583 *Int_Par_Ref = Int_Loc - Int_Glob;
584 Enum_Loc = Ident_1; 584 Enum_Loc = Ident_1;
585 } /* if */ 585 } /* if */
586 while (Enum_Loc != Ident_1); /* true */ 586 while (Enum_Loc != Ident_1); /* true */
587} /* Proc_2 */ 587} /* Proc_2 */
588 588
589 589
590Proc_3 (Ptr_Ref_Par) 590Proc_3 (Ptr_Ref_Par)
591/******************/ 591/******************/
592 /* executed once */ 592 /* executed once */
593 /* Ptr_Ref_Par becomes Ptr_Glob */ 593 /* Ptr_Ref_Par becomes Ptr_Glob */
594 594
@@ -890,121 +890,121 @@ double dhry_main( int n )
890 Proc_1 (Ptr_Glob); 890 Proc_1 (Ptr_Glob);
891 for (Ch_Index = 'A'; Ch_Index <= Ch_2_Glob; ++Ch_Index) 891 for (Ch_Index = 'A'; Ch_Index <= Ch_2_Glob; ++Ch_Index)
892 /* loop body executed twice */ 892 /* loop body executed twice */
893 { 893 {
894 if (Enum_Loc == Func_1 (Ch_Index, 'C')) 894 if (Enum_Loc == Func_1 (Ch_Index, 'C'))
895 /* then, not executed */ 895 /* then, not executed */
896 { 896 {
897 Proc_6 (Ident_1, &Enum_Loc); 897 Proc_6 (Ident_1, &Enum_Loc);
898 strcpy (Str_2_Loc, "DHRYSTONE PROGRAM, 3'RD STRING"); 898 strcpy (Str_2_Loc, "DHRYSTONE PROGRAM, 3'RD STRING");
899 Int_2_Loc = Run_Index; 899 Int_2_Loc = Run_Index;
900 Int_Glob = Run_Index; 900 Int_Glob = Run_Index;
901 } 901 }
902 } 902 }
903 /* Int_1_Loc == 3, Int_2_Loc == 3, Int_3_Loc == 7 */ 903 /* Int_1_Loc == 3, Int_2_Loc == 3, Int_3_Loc == 7 */
904 Int_2_Loc = Int_2_Loc * Int_1_Loc; 904 Int_2_Loc = Int_2_Loc * Int_1_Loc;
905 Int_1_Loc = Int_2_Loc / Int_3_Loc; 905 Int_1_Loc = Int_2_Loc / Int_3_Loc;
906 Int_2_Loc = 7 * (Int_2_Loc - Int_3_Loc) - Int_1_Loc; 906 Int_2_Loc = 7 * (Int_2_Loc - Int_3_Loc) - Int_1_Loc;
907 /* Int_1_Loc == 1, Int_2_Loc == 13, Int_3_Loc == 7 */ 907 /* Int_1_Loc == 1, Int_2_Loc == 13, Int_3_Loc == 7 */
908 Proc_2 (&Int_1_Loc); 908 Proc_2 (&Int_1_Loc);
909 /* Int_1_Loc == 5 */ 909 /* Int_1_Loc == 5 */
910 910
911 } /* loop "for Run_Index" */ 911 } /* loop "for Run_Index" */
912 912
913 /**************/ 913 /**************/
914 /* Stop timer */ 914 /* Stop timer */
915 /**************/ 915 /**************/
916 916
917 End_Time = dtime(); 917 End_Time = dtime();
918 918
919/* 919/*
920 printf ("Execution ends\n"); 920 printf ("Execution ends\n");
921 printf ("\n"); 921 printf ("\n");
922 printf ("Final values of the variables used in the benchmark:\n"); 922 printf ("Final values of the variables used in the benchmark:\n");
923 printf ("\n"); 923 printf ("\n");
924 printf ("Int_Glob: %d\n", Int_Glob); 924 printf ("Int_Glob: %d\n", Int_Glob);
925 printf (" should be: %d\n", 5); 925 printf (" should be: %d\n", 5);
926 printf ("Bool_Glob: %d\n", Bool_Glob); 926 printf ("Bool_Glob: %d\n", Bool_Glob);
927 printf (" should be: %d\n", 1); 927 printf (" should be: %d\n", 1);
928 printf ("Ch_1_Glob: %c\n", Ch_1_Glob); 928 printf ("Ch_1_Glob: %c\n", Ch_1_Glob);
929 printf (" should be: %c\n", 'A'); 929 printf (" should be: %c\n", 'A');
930 printf ("Ch_2_Glob: %c\n", Ch_2_Glob); 930 printf ("Ch_2_Glob: %c\n", Ch_2_Glob);
931 printf (" should be: %c\n", 'B'); 931 printf (" should be: %c\n", 'B');
932 printf ("Arr_1_Glob[8]: %d\n", Arr_1_Glob[8]); 932 printf ("Arr_1_Glob[8]: %d\n", Arr_1_Glob[8]);
933 printf (" should be: %d\n", 7); 933 printf (" should be: %d\n", 7);
934 printf ("Arr_2_Glob[8][7]: %d\n", Arr_2_Glob[8][7]); 934 printf ("Arr_2_Glob[8][7]: %d\n", Arr_2_Glob[8][7]);
935 printf (" should be: Number_Of_Runs + 10\n"); 935 printf (" should be: Number_Of_Runs + 10\n");
936 printf ("Ptr_Glob->\n"); 936 printf ("Ptr_Glob->\n");
937 printf (" Ptr_Comp: %d\n", (int) Ptr_Glob->Ptr_Comp); 937 printf (" Ptr_Comp: %d\n", (int) Ptr_Glob->Ptr_Comp);
938 printf (" should be: (implementation-dependent)\n"); 938 printf (" should be: (implementation-dependent)\n");
939 printf (" Discr: %d\n", Ptr_Glob->Discr); 939 printf (" Discr: %d\n", Ptr_Glob->Discr);
940 printf (" should be: %d\n", 0); 940 printf (" should be: %d\n", 0);
941 printf (" Enum_Comp: %d\n", Ptr_Glob->variant.var_1.Enum_Comp); 941 printf (" Enum_Comp: %d\n", Ptr_Glob->variant.var_1.Enum_Comp);
942 printf (" should be: %d\n", 2); 942 printf (" should be: %d\n", 2);
943 printf (" Int_Comp: %d\n", Ptr_Glob->variant.var_1.Int_Comp); 943 printf (" Int_Comp: %d\n", Ptr_Glob->variant.var_1.Int_Comp);
944 printf (" should be: %d\n", 17); 944 printf (" should be: %d\n", 17);
945 printf (" Str_Comp: %s\n", Ptr_Glob->variant.var_1.Str_Comp); 945 printf (" Str_Comp: %s\n", Ptr_Glob->variant.var_1.Str_Comp);
946 printf (" should be: DHRYSTONE PROGRAM, SOME STRING\n"); 946 printf (" should be: DHRYSTONE PROGRAM, SOME STRING\n");
947 printf ("Next_Ptr_Glob->\n"); 947 printf ("Next_Ptr_Glob->\n");
948 printf (" Ptr_Comp: %d\n", (int) Next_Ptr_Glob->Ptr_Comp); 948 printf (" Ptr_Comp: %d\n", (int) Next_Ptr_Glob->Ptr_Comp);
949 printf (" should be: (implementation-dependent), same as above\n"); 949 printf (" should be: (implementation-dependent), same as above\n");
950 printf (" Discr: %d\n", Next_Ptr_Glob->Discr); 950 printf (" Discr: %d\n", Next_Ptr_Glob->Discr);
951 printf (" should be: %d\n", 0); 951 printf (" should be: %d\n", 0);
952 printf (" Enum_Comp: %d\n", Next_Ptr_Glob->variant.var_1.Enum_Comp); 952 printf (" Enum_Comp: %d\n", Next_Ptr_Glob->variant.var_1.Enum_Comp);
953 printf (" should be: %d\n", 1); 953 printf (" should be: %d\n", 1);
954 printf (" Int_Comp: %d\n", Next_Ptr_Glob->variant.var_1.Int_Comp); 954 printf (" Int_Comp: %d\n", Next_Ptr_Glob->variant.var_1.Int_Comp);
955 printf (" should be: %d\n", 18); 955 printf (" should be: %d\n", 18);
956 printf (" Str_Comp: %s\n", Next_Ptr_Glob->variant.var_1.Str_Comp); 956 printf (" Str_Comp: %s\n", Next_Ptr_Glob->variant.var_1.Str_Comp);
957 printf (" should be: DHRYSTONE PROGRAM, SOME STRING\n"); 957 printf (" should be: DHRYSTONE PROGRAM, SOME STRING\n");
958 printf ("Int_1_Loc: %d\n", Int_1_Loc); 958 printf ("Int_1_Loc: %d\n", Int_1_Loc);
959 printf (" should be: %d\n", 5); 959 printf (" should be: %d\n", 5);
960 printf ("Int_2_Loc: %d\n", Int_2_Loc); 960 printf ("Int_2_Loc: %d\n", Int_2_Loc);
961 printf (" should be: %d\n", 13); 961 printf (" should be: %d\n", 13);
962 printf ("Int_3_Loc: %d\n", Int_3_Loc); 962 printf ("Int_3_Loc: %d\n", Int_3_Loc);
963 printf (" should be: %d\n", 7); 963 printf (" should be: %d\n", 7);
964 printf ("Enum_Loc: %d\n", Enum_Loc); 964 printf ("Enum_Loc: %d\n", Enum_Loc);
965 printf (" should be: %d\n", 1); 965 printf (" should be: %d\n", 1);
966 printf ("Str_1_Loc: %s\n", Str_1_Loc); 966 printf ("Str_1_Loc: %s\n", Str_1_Loc);
967 printf (" should be: DHRYSTONE PROGRAM, 1'ST STRING\n"); 967 printf (" should be: DHRYSTONE PROGRAM, 1'ST STRING\n");
968 printf ("Str_2_Loc: %s\n", Str_2_Loc); 968 printf ("Str_2_Loc: %s\n", Str_2_Loc);
969 printf (" should be: DHRYSTONE PROGRAM, 2'ND STRING\n"); 969 printf (" should be: DHRYSTONE PROGRAM, 2'ND STRING\n");
970 printf ("\n"); 970 printf ("\n");
971*/ 971*/
972 User_Time = End_Time - Begin_Time; 972 User_Time = End_Time - Begin_Time;
973 973
974 if (User_Time < Too_Small_Time) return -1; 974 if (User_Time < Too_Small_Time) return -1;
975 else 975 else
976 { 976 {
977 Microseconds = User_Time * Mic_secs_Per_Second 977 Microseconds = User_Time * Mic_secs_Per_Second
978 / (double) Number_Of_Runs; 978 / (double) Number_Of_Runs;
979 Dhrystones_Per_Second = (double) Number_Of_Runs / User_Time; 979 Dhrystones_Per_Second = (double) Number_Of_Runs / User_Time;
980 Vax_Mips = Dhrystones_Per_Second / 1757.0; 980 Vax_Mips = Dhrystones_Per_Second / 1757.0;
981 981
982#ifdef ROPT 982#ifdef ROPT
983 //printf ("Register option selected? YES\n"); 983 //printf ("Register option selected? YES\n");
984#else 984#else
985 //printf ("Register option selected? NO\n"); 985 //printf ("Register option selected? NO\n");
986 strcpy(Reg_Define, "Register option not selected."); 986 strncpy(Reg_Define, "Register option not selected.", 30);
987#endif 987#endif
988 printf ("Microseconds for one run through Dhrystone: "); 988 printf ("Microseconds for one run through Dhrystone: ");
989 printf ("%7.1lf \n", Microseconds); 989 printf ("%7.1lf \n", Microseconds);
990 printf ("Dhrystones per Second: "); 990 printf ("Dhrystones per Second: ");
991 printf ("%10.1lf \n", Dhrystones_Per_Second); 991 printf ("%10.1lf \n", Dhrystones_Per_Second);
992 printf ("VAX MIPS rating = %10.3lf \n",Vax_Mips); 992 printf ("VAX MIPS rating = %10.3lf \n",Vax_Mips);
993 printf ("\n"); 993 printf ("\n");
994 994
995 return Dhrystones_Per_Second; 995 return Dhrystones_Per_Second;
996 996
997/* 997/*
998 998
999 fprintf(Ap,"\n"); 999 fprintf(Ap,"\n");
1000 fprintf(Ap,"Dhrystone Benchmark, Version 2.1 (Language: C)\n"); 1000 fprintf(Ap,"Dhrystone Benchmark, Version 2.1 (Language: C)\n");
1001 fprintf(Ap,"%s\n",Reg_Define); 1001 fprintf(Ap,"%s\n",Reg_Define);
1002 fprintf(Ap,"Microseconds for one loop: %7.1lf\n",Microseconds); 1002 fprintf(Ap,"Microseconds for one loop: %7.1lf\n",Microseconds);
1003 fprintf(Ap,"Dhrystones per second: %10.1lf\n",Dhrystones_Per_Second); 1003 fprintf(Ap,"Dhrystones per second: %10.1lf\n",Dhrystones_Per_Second);
1004 fprintf(Ap,"VAX MIPS rating: %10.3lf\n",Vax_Mips); 1004 fprintf(Ap,"VAX MIPS rating: %10.3lf\n",Vax_Mips);
1005 fclose(Ap); 1005 fclose(Ap);
1006*/ 1006*/
1007 1007
1008 } 1008 }
1009 1009
1010} 1010}