@@ -124,8 +124,13 @@ static void findmust(struct parse * p, struct re_guts * g);
124
124
static sopno pluscount (struct parse * p ,struct re_guts * g );
125
125
static int pg_isdigit (int c );
126
126
static int pg_isalpha (int c );
127
+ static int pg_isalnum (int c );
127
128
static int pg_isupper (int c );
128
129
static int pg_islower (int c );
130
+ static int pg_iscntrl (int c );
131
+ static int pg_isgraph (int c );
132
+ static int pg_isprint (int c );
133
+ static int pg_ispunct (int c );
129
134
130
135
static pg_wchar nuls [10 ];/* place to point scanner in event of
131
136
* error */
@@ -1709,6 +1714,16 @@ pg_isalpha(int c)
1709
1714
#endif
1710
1715
}
1711
1716
1717
+ static int
1718
+ pg_isalnum (int c )
1719
+ {
1720
+ #ifdef MULTIBYTE
1721
+ return (c >=0 && c <=UCHAR_MAX && isalnum ((unsignedchar )c ));
1722
+ #else
1723
+ return (isalnum ((unsignedchar )c ));
1724
+ #endif
1725
+ }
1726
+
1712
1727
static int
1713
1728
pg_isupper (int c )
1714
1729
{
@@ -1729,6 +1744,46 @@ pg_islower(int c)
1729
1744
#endif
1730
1745
}
1731
1746
1747
+ static int
1748
+ pg_iscntrl (int c )
1749
+ {
1750
+ #ifdef MULTIBYTE
1751
+ return (c >=0 && c <=UCHAR_MAX && iscntrl ((unsignedchar )c ));
1752
+ #else
1753
+ return (iscntrl ((unsignedchar )c ));
1754
+ #endif
1755
+ }
1756
+
1757
+ static int
1758
+ pg_isgraph (int c )
1759
+ {
1760
+ #ifdef MULTIBYTE
1761
+ return (c >=0 && c <=UCHAR_MAX && isgraph ((unsignedchar )c ));
1762
+ #else
1763
+ return (isgraph ((unsignedchar )c ));
1764
+ #endif
1765
+ }
1766
+
1767
+ static int
1768
+ pg_isprint (int c )
1769
+ {
1770
+ #ifdef MULTIBYTE
1771
+ return (c >=0 && c <=UCHAR_MAX && isprint ((unsignedchar )c ));
1772
+ #else
1773
+ return (isprint ((unsignedchar )c ));
1774
+ #endif
1775
+ }
1776
+
1777
+ static int
1778
+ pg_ispunct (int c )
1779
+ {
1780
+ #ifdef MULTIBYTE
1781
+ return (c >=0 && c <=UCHAR_MAX && ispunct ((unsignedchar )c ));
1782
+ #else
1783
+ return (ispunct ((unsignedchar )c ));
1784
+ #endif
1785
+ }
1786
+
1732
1787
static struct cclass *
1733
1788
cclass_init (void )
1734
1789
{
@@ -1756,17 +1811,17 @@ cclass_init(void)
1756
1811
char * chars ;
1757
1812
}cclass_factories []=
1758
1813
{
1759
- {"alnum" ,isalnum ,NULL },
1760
- {"alpha" ,isalpha ,NULL },
1814
+ {"alnum" ,pg_isalnum ,NULL },
1815
+ {"alpha" ,pg_isalpha ,NULL },
1761
1816
{"blank" ,NULL ," \t" },
1762
- {"cntrl" ,iscntrl ,NULL },
1817
+ {"cntrl" ,pg_iscntrl ,NULL },
1763
1818
{"digit" ,NULL ,"0123456789" },
1764
- {"graph" ,isgraph ,NULL },
1765
- {"lower" ,islower ,NULL },
1766
- {"print" ,isprint ,NULL },
1767
- {"punct" ,ispunct ,NULL },
1819
+ {"graph" ,pg_isgraph ,NULL },
1820
+ {"lower" ,pg_islower ,NULL },
1821
+ {"print" ,pg_isprint ,NULL },
1822
+ {"punct" ,pg_ispunct ,NULL },
1768
1823
{"space" ,NULL ,"\t\n\v\f\r " },
1769
- {"upper" ,isupper ,NULL },
1824
+ {"upper" ,pg_isupper ,NULL },
1770
1825
{"xdigit" ,NULL ,"0123456789ABCDEFabcdef" },
1771
1826
{NULL ,NULL ,NULL }
1772
1827
};