aboutsummaryrefslogtreecommitdiff
path: root/utility.c
diff options
context:
space:
mode:
authorandersen <andersen@69ca8d6d-28ef-0310-b511-8ec308f3f277>2000-07-05 17:26:35 +0000
committerandersen <andersen@69ca8d6d-28ef-0310-b511-8ec308f3f277>2000-07-05 17:26:35 +0000
commitd51df1bb1b5513658a5517d49ed8ded55c819f62 (patch)
treea2fa5e67df2ccd2881a21ed4d22c6f7453b793b2 /utility.c
parent2323f4066d8cab67c2edc21361d27e1983e55b7a (diff)
downloadbusybox-w32-d51df1bb1b5513658a5517d49ed8ded55c819f62.tar.gz
busybox-w32-d51df1bb1b5513658a5517d49ed8ded55c819f62.tar.bz2
busybox-w32-d51df1bb1b5513658a5517d49ed8ded55c819f62.zip
* Fix to tr so it recognizes standard escape sequences. Merged common
escape seq. code from tr and echo into utility.c. Fix thanks to Matt Kraai <kraai@alumni.carnegiemellon.edu>. * This should close Bug #1015. Please test. -Erik git-svn-id: svn://busybox.net/trunk/busybox@737 69ca8d6d-28ef-0310-b511-8ec308f3f277
Diffstat (limited to '')
-rw-r--r--utility.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/utility.c b/utility.c
index de53dbda8..f3af01f44 100644
--- a/utility.c
+++ b/utility.c
@@ -1617,6 +1617,51 @@ extern char *get_line_from_file(FILE *file)
1617 return linebuf; 1617 return linebuf;
1618} 1618}
1619 1619
1620#if defined BB_ECHO || defined BB_TR
1621char process_escape_sequence(char **ptr)
1622{
1623 char c;
1624
1625 switch (c = *(*ptr)++) {
1626 case 'a':
1627 c = '\a';
1628 break;
1629 case 'b':
1630 c = '\b';
1631 break;
1632 case 'f':
1633 c = '\f';
1634 break;
1635 case 'n':
1636 c = '\n';
1637 break;
1638 case 't':
1639 c = '\t';
1640 break;
1641 case 'v':
1642 c = '\v';
1643 break;
1644 case '\\':
1645 c = '\\';
1646 break;
1647 case '0': case '1': case '2': case '3':
1648 case '4': case '5': case '6': case '7':
1649 c -= '0';
1650 if ('0' <= **ptr && **ptr <= '7') {
1651 c = c * 8 + (*(*ptr)++ - '0');
1652 if ('0' <= **ptr && **ptr <= '7')
1653 c = c * 8 + (*(*ptr)++ - '0');
1654 }
1655 break;
1656 default:
1657 (*ptr)--;
1658 c = '\\';
1659 break;
1660 }
1661 return c;
1662}
1663#endif
1664
1620/* END CODE */ 1665/* END CODE */
1621/* 1666/*
1622Local Variables: 1667Local Variables: