1*8462SApril.Chin@Sun.COM /*********************************************************************** 2*8462SApril.Chin@Sun.COM * * 3*8462SApril.Chin@Sun.COM * This software is part of the ast package * 4*8462SApril.Chin@Sun.COM * Copyright (c) 1985-2008 AT&T Intellectual Property * 5*8462SApril.Chin@Sun.COM * and is licensed under the * 6*8462SApril.Chin@Sun.COM * Common Public License, Version 1.0 * 7*8462SApril.Chin@Sun.COM * by AT&T Intellectual Property * 8*8462SApril.Chin@Sun.COM * * 9*8462SApril.Chin@Sun.COM * A copy of the License is available at * 10*8462SApril.Chin@Sun.COM * http://www.opensource.org/licenses/cpl1.0.txt * 11*8462SApril.Chin@Sun.COM * (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) * 12*8462SApril.Chin@Sun.COM * * 13*8462SApril.Chin@Sun.COM * Information and Software Systems Research * 14*8462SApril.Chin@Sun.COM * AT&T Research * 15*8462SApril.Chin@Sun.COM * Florham Park NJ * 16*8462SApril.Chin@Sun.COM * * 17*8462SApril.Chin@Sun.COM * Glenn Fowler <gsf@research.att.com> * 18*8462SApril.Chin@Sun.COM * David Korn <dgk@research.att.com> * 19*8462SApril.Chin@Sun.COM * Phong Vo <kpv@research.att.com> * 20*8462SApril.Chin@Sun.COM * * 21*8462SApril.Chin@Sun.COM ***********************************************************************/ 22*8462SApril.Chin@Sun.COM #pragma prototyped 23*8462SApril.Chin@Sun.COM /* 24*8462SApril.Chin@Sun.COM * Glenn Fowler 25*8462SApril.Chin@Sun.COM * AT&T Research 26*8462SApril.Chin@Sun.COM * 27*8462SApril.Chin@Sun.COM * _opt_infop_ context control 28*8462SApril.Chin@Sun.COM * 29*8462SApril.Chin@Sun.COM * allocate new context: 30*8462SApril.Chin@Sun.COM * new_context = optctx(0, 0); 31*8462SApril.Chin@Sun.COM * free new context: 32*8462SApril.Chin@Sun.COM * optctx(0, new_context); 33*8462SApril.Chin@Sun.COM * switch to new_context: 34*8462SApril.Chin@Sun.COM * old_context = optctx(new_context, 0); 35*8462SApril.Chin@Sun.COM * switch to old_context and free new_context: 36*8462SApril.Chin@Sun.COM * optctx(old_context, new_context); 37*8462SApril.Chin@Sun.COM */ 38*8462SApril.Chin@Sun.COM 39*8462SApril.Chin@Sun.COM #include <optlib.h> 40*8462SApril.Chin@Sun.COM 41*8462SApril.Chin@Sun.COM static Opt_t* freecontext; 42*8462SApril.Chin@Sun.COM 43*8462SApril.Chin@Sun.COM Opt_t* 44*8462SApril.Chin@Sun.COM optctx(Opt_t* p, Opt_t* o) 45*8462SApril.Chin@Sun.COM { 46*8462SApril.Chin@Sun.COM if (o) 47*8462SApril.Chin@Sun.COM { 48*8462SApril.Chin@Sun.COM if (freecontext) 49*8462SApril.Chin@Sun.COM free(o); 50*8462SApril.Chin@Sun.COM else 51*8462SApril.Chin@Sun.COM freecontext = o; 52*8462SApril.Chin@Sun.COM if (!p) 53*8462SApril.Chin@Sun.COM return 0; 54*8462SApril.Chin@Sun.COM } 55*8462SApril.Chin@Sun.COM if (p) 56*8462SApril.Chin@Sun.COM { 57*8462SApril.Chin@Sun.COM o = _opt_infop_; 58*8462SApril.Chin@Sun.COM _opt_infop_ = p; 59*8462SApril.Chin@Sun.COM } 60*8462SApril.Chin@Sun.COM else 61*8462SApril.Chin@Sun.COM { 62*8462SApril.Chin@Sun.COM if (o = freecontext) 63*8462SApril.Chin@Sun.COM freecontext = 0; 64*8462SApril.Chin@Sun.COM else if (!(o = newof(0, Opt_t, 1, 0))) 65*8462SApril.Chin@Sun.COM return 0; 66*8462SApril.Chin@Sun.COM memset(o, 0, sizeof(Opt_t)); 67*8462SApril.Chin@Sun.COM o->state = _opt_infop_->state; 68*8462SApril.Chin@Sun.COM } 69*8462SApril.Chin@Sun.COM return o; 70*8462SApril.Chin@Sun.COM } 71