/***********************************************************************1* *2* This software is part of the ast package *3* Copyright (c) 1985-2011 AT&T Intellectual Property *4* and is licensed under the *5* Eclipse Public License, Version 1.0 *6* by AT&T Intellectual Property *7* *8* A copy of the License is available at *9* http://www.eclipse.org/org/documents/epl-v10.html *10* (with md5 checksum b35adb5213ca9657e911e9befb180842) *11* *12* Information and Software Systems Research *13* AT&T Research *14* Florham Park NJ *15* *16* Glenn Fowler <[email protected]> *17* David Korn <[email protected]> *18* Phong Vo <[email protected]> *19* *20***********************************************************************/21#pragma prototyped22/*23* Glenn Fowler24* AT&T Research25*26* convert \X character constants in s in place27* the length of the converted s is returned (may have embedded \0's)28* wide chars absent locale guidance default to UTF-829* strexp() FMT_EXP_* flags passed to chrexp() for selective conversion30*/3132#include <ast.h>3334int35strexp(register char* s, int flags)36{37register char* t;38register unsigned int c;39char* b;40char* e;41int w;4243b = t = s;44while (c = *s++)45{46if (c == '\\')47{48c = chrexp(s - 1, &e, &w, flags);49s = e;50if (w)51{52t += mbwide() ? mbconv(t, c) : wc2utf8(t, c);53continue;54}55}56*t++ = c;57}58*t = 0;59return t - b;60}6162int63stresc(register char* s)64{65return strexp(s, FMT_EXP_CHAR|FMT_EXP_LINE|FMT_EXP_WIDE);66}676869