1/***********************************************************************
2*                                                                      *
3*               This software is part of the ast package               *
4*          Copyright (c) 1990-2011 AT&T Intellectual Property          *
5*                      and is licensed under the                       *
6*                 Eclipse Public License, Version 1.0                  *
7*                    by AT&T Intellectual Property                     *
8*                                                                      *
9*                A copy of the License is available at                 *
10*          http://www.eclipse.org/org/documents/epl-v10.html           *
11*         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
12*                                                                      *
13*              Information and Software Systems Research               *
14*                            AT&T Research                             *
15*                           Florham Park NJ                            *
16*                                                                      *
17*                 Glenn Fowler <gsf@research.att.com>                  *
18*                                                                      *
19***********************************************************************/
20#pragma prototyped
21/*
22 * Glenn Fowler
23 * AT&T Research
24 *
25 * single quote s into sp
26 * if type!=0 then /<getenv(<CO_ENV_TYPE>)/ translated to /$<CO_ENV_TYPE>/
27 */
28
29#include "colib.h"
30
31void
32coquote(register Sfio_t* sp, register const char* s, int type)
33{
34	register int	c;
35
36	if (type && (!state.type || !*state.type))
37		type = 0;
38	while (c = *s++)
39	{
40		sfputc(sp, c);
41		if (c == '\'')
42		{
43			sfputc(sp, '\\');
44			sfputc(sp, '\'');
45			sfputc(sp, '\'');
46		}
47		else if (type && c == '/' && *s == *state.type)
48		{
49			register const char*	x = s;
50			register char*		t = state.type;
51
52			while (*t && *t++ == *x) x++;
53			if (!*t && *x == '/')
54			{
55				s = x;
56				sfprintf(sp, "'$%s'", CO_ENV_TYPE);
57			}
58		}
59	}
60}
61