compact a string of inventory letters by dashing runs of letters */
| 1624 | |
| 1625 | /* compact a string of inventory letters by dashing runs of letters */ |
| 1626 | staticfn void |
| 1627 | compactify(char *buf) |
| 1628 | { |
| 1629 | int i1 = 1, i2 = 1; |
| 1630 | char ilet, ilet1, ilet2; |
| 1631 | |
| 1632 | ilet2 = buf[0]; |
| 1633 | ilet1 = buf[1]; |
| 1634 | buf[++i2] = buf[++i1]; |
| 1635 | ilet = buf[i1]; |
| 1636 | while (ilet) { |
| 1637 | if (ilet == ilet1 + 1) { |
| 1638 | if (ilet1 == ilet2 + 1) |
| 1639 | buf[i2 - 1] = ilet1 = '-'; |
| 1640 | else if (ilet2 == '-') { |
| 1641 | buf[i2 - 1] = ++ilet1; |
| 1642 | buf[i2] = buf[++i1]; |
| 1643 | ilet = buf[i1]; |
| 1644 | continue; |
| 1645 | } |
| 1646 | } else if (ilet == NOINVSYM) { |
| 1647 | /* compact three or more consecutive '#' |
| 1648 | characters into "#-#" */ |
| 1649 | if (i2 >= 2 && buf[i2 - 2] == NOINVSYM && buf[i2 - 1] == NOINVSYM) |
| 1650 | buf[i2 - 1] = '-'; |
| 1651 | else if (i2 >= 3 && buf[i2 - 3] == NOINVSYM && buf[i2 - 2] == '-' |
| 1652 | && buf[i2 - 1] == NOINVSYM) |
| 1653 | --i2; |
| 1654 | } |
| 1655 | ilet2 = ilet1; |
| 1656 | ilet1 = ilet; |
| 1657 | buf[++i2] = buf[++i1]; |
| 1658 | ilet = buf[i1]; |
| 1659 | } |
| 1660 | } |
| 1661 | |
| 1662 | /* some objects shouldn't be split when count given to getobj or askchain */ |
| 1663 | boolean |
no outgoing calls
no test coverage detected