XForms: the missing fl_lookup_RGBcolor()

From: Rouben Rostamian (rostamian@umbc.edu)
Date: Thu May 22 2003 - 11:54:04 EDT

  • Next message: Angus Leeming: "Re: XForms: autoconf/automake patch"

    # To subscribers of the xforms list from "Rouben Rostamian" <rostamian@umbc.edu> :

    I have pointed out in a couple of previous messages to this list that
    the function fl_lookup_RGBcolor() has fallen off of the 1.0 distribution.

    The header file forms.h still contains the declaration of
    fl_lookup_RGBcolor() but the function definition is missing
    from the library.

    I have verified that fl_lookup_RGBcolor() was present
    in the distribution as late as in xforms-1.0RC3.tgz but
    it disappeared by the time it became 1.0 and moved to Savannah.
    The implementation of the function was in the file rgb_db.c.
    That file was removed in 1.0.

    Here's what the function does:

      int fl_lookup_RGBcolor(const char *colname, int *r, int *g, int *b)

      Receives a color name string (colname) and calculates its
      corresponding RGB values. The color name may be specified in any
      of the several formats that an X server can recognize. E.g., "gold",
      "hot pink", "#ff34ae", "rgb:ff/34/ae" are all admissible color names.
      The calculated RGB values are normalized to the range 0..255.
      The function returns 0 on success, -1 on failure.

    Here is a function that I wrote that implements fl_lookup_RGBcolor()
    as specified above:

    /* --- fl_lookup_RGBcolor() -------------------------- */
    #include <X11/X.h>
    #include <X11/forms.h>

    int fl_lookup_RGBcolor(const char *colname, int *r, int *g, int *b)
    {
            XColor xc;
            unsigned int M = (1U<<fl_state[fl_vmode].depth)-1;

            if (XParseColor(fl_display, fl_state[fl_vmode].colormap,
                                    colname, &xc) == 0)
                    return -1;

            *r = 255 * xc.red / M;
            *g = 255 * xc.green / M;
            *b = 255 * xc.blue / M;

            return 0;
    }
    /* ----------------------------------------------------- */

    This implementation is much shorter and more efficient than xforms'
    original implementation in rgb_db.c. It simply queries the server for
    the color specification as opposed to the original implementation which
    opens and reads the file /usr/lib/X11/rgb.txt for that information.

    For the record, I have appended the file rgb_db.c to the end
    of this message. I don't recommend using it. The version of
    fl_lookup_RGBcolor() given above is preferable.

    -- 
    Rouben Rostamian <rostamian@umbc.edu>
    

    %-----------------------% cut here %--------------------------% begin 644 rgb_db.c M+RH*("H*("H@(%1H:7,@9FEL92!I<R!P87)T(&]F('1H92!81F]R;7,@;&EB M<F%R>2!P86-K86=E+@H@*@H@*B!81F]R;7,@:7,@9G)E92!S;V9T=V%R93L@ M>6]U(&-A;B!R961I<W1R:6)U=&4@:70@86YD+V]R(&UO9&EF>2!I=`H@*B!U M;F1E<B!T:&4@=&5R;7,@;V8@=&AE($=.52!,97-S97(@1V5N97)A;"!0=6)L M:6,@3&EC96YS92!A<PH@*B!P=6)L:7-H960@8GD@=&AE($9R964@4V]F='=A M<F4@1F]U;F1A=&EO;CL@96ET:&5R('9E<G-I;VX@,BXQ+"!O<@H@*B`H870@ M>6]U<B!O<'1I;VXI(&%N>2!L871E<B!V97)S:6]N+@H@*@H@*B!81F]R;7,@ M:7,@9&ES=')I8G5T960@:6X@=&AE(&AO<&4@=&AA="!I="!W:6QL(&)E('5S M969U;"P@8G5T"B`J(%=)5$A/550@04Y9(%=!4E)!3E19.R!W:71H;W5T(&5V M96X@=&AE(&EM<&QI960@=V%R<F%N='D@;V8*("H@34520TA!3E1!0DE,2519 M(&]R($9)5$Y%4U,@1D]2($$@4$%25$E#54Q!4B!055)03U-%+B`@4V5E('1H M92!'3E4*("H@3&5S<V5R($=E;F5R86P@4'5B;&EC($QI8V5N<V4@9F]R(&UO M<F4@9&5T86EL<RX*("H*("H@66]U('-H;W5L9"!H879E(')E8V5I=F5D(&$@ M8V]P>2!O9B!T:&4@1TY5($QE<W-E<B!'96YE<F%L(%!U8FQI8PH@*B!,:6-E M;G-E(&%L;VYG('=I=&@@6$9O<FUS.R!S964@=&AE(&9I;&4@0T]064E.1RX@ M($EF(&YO="P@=W)I=&4@=&\*("H@=&AE($9R964@4V]F='=A<F4@1F]U;F1A M=&EO;BP@-3D@5&5M<&QE(%!L86-E("T@4W5I=&4@,S,P+"!";W-T;VXL"B`J M($U!(#`R,3$Q+3$S,#<L(%5302X*("H*("HO"@H*+RH*("H@("1)9#H@<F=B M7V1B+F,L=B`Q+C`@,C`P,B\P-2\P."`P-3HQ-CHS,"!Z:&%O(%)E;&5A<V4@ M)`H@*@H@*B`@0V]P>7)I9VAT("AC*2`Q.3DY+3(P,#(@5"Y#+B!::&%O"B`J M"B`J("!S96%R8V@@=&AE(')G8BYT>'0@9&%T86)A<V4@9F]R(&$@<W!E8VEF M:6,@8V]L;W(*("HO"@HC:6YC;'5D92`B9F]R;7,N:"(*(VEN8VQU9&4@/&-T M>7!E+F@^"@HC9&5F:6YE($1%0E5'(#`*"G-T871I8R!C:&%R("IR9V)F:6QE M6UT@/0I["B`@("`B+W5S<B]L:6(O6#$Q+W)G8BYT>'0B+`DO*B!T>7!I8V%L M("HO"B`@("`B+W5S<B]L;V-A;"]L:6(O6#$Q+W)G8BYT>'0B+`DO*B!T<GD@ M("`@("HO"B-I9B!D969I;F5D*'-U;BD@?'P@9&5F:6YE9"A?7W-U;E]?*0H@ M("`@(B]U<W(O;W!E;G=I;B]L:6(O<F=B+G1X="(L"2\J(%-U;B`@("`@*B\* M(V5N9&EF"B-I9F1E9B!?7T5-6%]?"B`@("`B+UA&<F5E.#8O;&EB+U@Q,2]R M9V(N='AT(BP)+RH@3U,R("`@("`J+PHC96YD:68*(VEF9&5F(%]?5DU3"B`@ M("`B4UE3)$U!3D%'15(Z1$5#5R121T(N1$%4(BP)+RH@=F%X("HO"B-E;F1I M9@H@("`@,`I].PH*='EP961E9B!S=')U8W0*>PH@("`@8VAA<B!N86UE6S,R M73L*("`@('5N<VEG;F5D('-H;W)T('(L(&<L(&(["GT*4D="1$(["@IS=&%T M:6,@4D="1$(@*G)G8E]D8CL*<W1A=&EC(&EN="!D8E]S:7IE+"!N96YT<FEE M<SL)+RH@=&]T86P@<VEZ92!A;F0@9FEL;&5D(&5N=')I97,@*B\*<W1A=&EC M(&EN="!R96%D7V5N=')Y*$9)3$4@*B!F<"P@:6YT("IR+"!I;G0@*F<L(&EN M="`J8BP@8VAA<B!N86UE6UTI.PIS=&%T:6,@8VAA<B!H97AV6S(U-ET["@II M;G0*9FQ?:6YI=%]21T)D871A8F%S92AC;VYS="!C:&%R("IF*0I["B`@("!& M24Q%("IF<"`](#`["B`@("!C:&%R(&YA;65;,3(X72P@*FQN86UE.PH@("`@ M8VAA<B`J8V]N<W0@*F9I;&4@/2!R9V)F:6QE.PH@("`@:6YT('(L(&<L(&(L M(&QR+"!L9RP@;&(L('-I>F4@/2`W,#`["B`@("!21T)$0B`J9&(L("ID8G,[ M"@H@("`@:68@*')G8E]D8BD*"7)E='5R;B`Q.PH*("`@(&EF("AF*0H)9G`@ M/2!F;W!E;BAF+"`B<B(I.PH*("`@("\J('-E87)C:"!D969A=6QT(&QO8V%T M:6]N(&EF(&-A;B=T(&]P96X@:6YP=70@9FEL92`J+PH@("`@9F]R("@[("%F M<"`F)B`J9FEL93L@9FEL92LK*0H)9G`@/2!F;W!E;B@J9FEL92P@(G(B*3L* M"B`@("!I9B`H(69P*0H@("`@>PH)35]E<G(H(DEN:71#;VQO<DQO;VMU<"(L M(")C86XG="!F:6YD('1H92!R9V(@8V]L;W(@9&%T86)A<V4B*3L*"7)E='5R M;B`M,3L*("`@('T*"B`@("`O*B!N;W<@9V5T('1H92!D871A8F%S92`J+PH@ M("`@:68@*"$H<F=B7V1B(#T@9FQ?;6%L;&]C*'-I>F5O9B@J<F=B7V1B*2`J M('-I>F4I*2D*("`@('L*"4U?97)R*"));FET0V]L;W),;V]K=7`B+"`B0V%N M)W0@9V5T(&UE;6]R>2(I.PH)<F5T=7)N("TQ.PH@("`@?0H*"B`@("!F;W(@ M*'(@/2`P.R!R(#P@,3`[('(K*RD*"6AE>'9;<B`K("<P)UT@/2!R.PH*("`@ M(&9O<B`H<B`](#$P.R!R(#P](#$U.R!R*RLI"B`@("!["@EH97AV6W(@+2`Q M,"`K("=A)UT@/2!R.PH):&5X=EMR("T@,3`@*R`G02==(#T@<CL*("`@('T* M"@H@("`@+RH@;F]W(')E860@:70@*B\*("`@(&1B(#T@<F=B7V1B.PH@("`@ M9&)S(#T@<F=B7V1B("L@<VEZ93L*("`@(&QN86UE(#T@(B(["B`@("!L<B`] M(&QG(#T@;&(@/2`M,3L*("`@(&9O<B`H.R!R96%D7V5N=')Y*&9P+"`F<BP@ M)F<L("9B+"!N86UE*2`F)B!D8B`\(&1B<SLI"B`@("!["@ED8BT^<B`]('([ M"@ED8BT^9R`](&<["@ED8BT^8B`](&(["@H)+RH@=6YI<75E('1H92!E;G1R M>2!O;B!T:&4@9FQY("HO"@EI9B`H<B`A/2!L<B!\?"!G("$](&QG('Q\(&(@ M(3T@;&(@?'P@<W1R8V%S96-M<"AN86UE+"!L;F%M92DI"@E["@D@("`@;&YA M;64@/2!S=')C<'DH9&(M/FYA;64L(&YA;64I.PH)("`@(&YE;G1R:65S*RL[ M"B-I9B!$14)51PH)("`@(&9P<FEN=&8H<W1D97)R+"(H)3-D("4S9"`E,V0I M("5S7&XB+"!D8BT^<BP@9&(M/F<L(&1B+3YB+"!D8BT^;F%M92D["B-E;F1I M9@H)("`@(&EF("AD8B`]/2!D8G,@+2`Q*0H)("`@('L*"0ES:7IE("L]('-I M>F4@+R`R.PH)"7)G8E]D8B`](&9L7W)E86QL;V,H<F=B7V1B+"!S:7IE;V8H M*G)G8E]D8BD@*B!S:7IE*3L*"0ED8G,@/2!R9V)?9&(@*R!S:7IE.PH)("`@ M('T*"2`@("!D8BLK.PH)("`@(&QR(#T@<CL*"2`@("!L9R`](&<["@D@("`@ M;&(@/2!B.PH)?0H@("`@?0H*("`@(&9C;&]S92AF<"D["B`@("!D8E]S:7IE M(#T@<VEZ93L*"B-I9B!$14)51PH@("`@9G!R:6YT9BAS=&1E<G(L("(@5&]T M86Q%;G1R:65S.B`E9"!O9B`E9"!F:6QL961<;B(L(&YE;G1R:65S+"!D8E]S M:7IE*3L*(V5N9&EF"@H@("`@<F5T=7)N("AN96YT<FEE<R`^(#$P,"D@/R`Q M(#H@+3$["GT*"FEN=`IF;%]L;V]K=7!?4D="8V]L;W(H8V]N<W0@8VAA<B`J M<F5Q7VYA;64L(&EN="`J<BP@:6YT("IG+"!I;G0@*F(I"GL*("`@(&EN="!M M871C:"P@:3L*("`@(%)'0D1"("ID8CL*("`@(&-H87(@;F%M95LQ,CA=+"`J M<#L*"B`@("!I9B`H(7)E<5]N86UE('Q\("$J<F5Q7VYA;64I"B`@("!["@DJ M<B`]("IG(#T@*F(@/2`P.PH)<F5T=7)N("TQ.PH@("`@?0H*("`@('`@/2`H M8VAA<B`J*2!R97%?;F%M93L*"B`@("`O*B!S<75E97IE(&]U="!A;&P@<W!A M8V5S("HO"B`@("!F;W(@*&D@/2`P.R`J<"`F)B!I(#P@,3(W.R!P*RLI"B`@ M("!["@EI9B`H(6ES<W!A8V4H("@@:6YT("D@*G`I*0H)("`@(&YA;65;:2LK M72`]("IP.PH@("`@?0H@("`@;F%M95MI72`]("=<,"<["@H@("`@:68@*"%R M9V)?9&(I"@EF;%]I;FET7U)'0F1A=&%B87-E*#`I.PH*("`@(&EF("@A<F=B M7V1B*0H@("`@>PH)35]E<G(H(DQO;VMU<$-O;&]R(BP@(F1A=&%B87-E('5N M:6YI=&EA;&EZ960B*3L*"2IR(#T@*F<@/2`J8B`](#`["@ER971U<FX@+3$[ M"B`@("!]"@H@("`@+RH@<V5A<F-H(&9O<B!S<&5C:6%L(&-A<V5S.B!N=6UE M<FEC86P@86YD($YO;F4@*B\*("`@(&EF("AS=')C87-E8VUP*&YA;64L("). M;VYE(BD@/3T@,"D*("`@('L*"2IR(#T@*F<@/2`J8B`]("TQ.PH@("`@?0H@ M("`@96QS92!I9B`H*FYA;64@/3T@)R,G*0H@("`@>PH)=6YS:6=N960@8VAA M<B`J<2`]("AU;G-I9VYE9"!C:&%R("HI(&YA;64["@EI9B`H*&UA=&-H(#T@ M<W1R;&5N*&YA;64I*2`]/2`W*0DO*B`C<G)G9V)B("HO"@E["@D@("`@*G(@ M/2`H:&5X=EMQ6S%=72`\/"`T*2!\(&AE>'9;<5LR75T["@D@("`@*F<@/2`H M:&5X=EMQ6S-=72`\/"`T*2!\(&AE>'9;<5LT75T["@D@("`@*F(@/2`H:&5X M=EMQ6S5=72`\/"`T*2!\(&AE>'9;<5LV75T["@E]"@EE;'-E(&EF("AM871C M:"`]/2`Q,RD)+RH@(W)R<G)G9V=G8F)B8B`J+PH)>PH)("`@("IR(#T@*&AE M>'9;<5LQ75T@/#P@,3(I('P@*&AE>'9;<5LR75T@/#P@."D@?`H)"2AH97AV M6W%;,UU=(#P\(#0I('P@:&5X=EMQ6S1=73L*"2`@("`J9R`]("AH97AV6W%; M-5U=(#P\(#$R*2!\("AH97AV6W%;-EU=(#P\(#@I('P*"0DH:&5X=EMQ6S== M72`\/"`T*2!\(&AE>'9;<5LX75T["@D@("`@*F(@/2`H:&5X=EMQ6SE=72`\ M/"`Q,BD@?"`H:&5X=EMQ6S$P75T@/#P@."D@?`H)"2AH97AV6W%;,3%=72`\ M/"`T*2!\(&AE>'9;<5LQ,EU=.PH*"2`@("`J<B`]("@J<B`J(#(U-4PI("\@ M-C4U,S5,.PH)("`@("IG(#T@*"IG("H@,C4U3"D@+R`V-34S-4P["@D@("`@ M*F(@/2`H*F(@*B`R-35,*2`O(#8U-3,U3#L*"7T*"65L<V4@:68@*&UA=&-H M(#T](#$P*0DO*B`C<G)R9V=G8F)B("HO"@E["@D@("`@*G(@/2`H:&5X=EMQ M6S%=72`\/"`X*2!\("AH97AV6W%;,EU=(#P\(#0I('P@*&AE>'9;<5LS75TI M.PH)("`@("IG(#T@*&AE>'9;<5LT75T@/#P@."D@?"`H:&5X=EMQ6S5=72`\ M/"`T*2!\("AH97AV6W%;-EU=*3L*"2`@("`J8B`]("AH97AV6W%;-UU=(#P\ M(#@I('P@*&AE>'9;<5LX75T@/#P@-"D@?"`H:&5X=EMQ6SE=72D["@H)("`@ M("IR(#T@*"IR("H@,C4U3"D@+R`T,#DU.PH)("`@("IG(#T@*"IG("H@,C4U M3"D@+R`T,#DU.PH)("`@("IB(#T@*"IB("H@,C4U3"D@+R`T,#DU.PH)?0H) M96QS92!I9B`H;6%T8V@@/3T@-"D*"7L*"2`@("`O*B!T:&ES(&ES(&YO="!C M;VYF;W)M86YT('1O('1H92!S<&5C(&)U="!P<F]B86)L>2!B971T97(@*B\* M"2`@("`J<B`]("AH97AV6W%;,5U=("H@,C4U*2`O(#$U.PH)("`@("IG(#T@ M*&AE>'9;<5LR75T@*B`R-34I("\@,34["@D@("`@*F(@/2`H:&5X=EMQ6S-= M72`J(#(U-2D@+R`Q-3L*"7T*"65L<V4@:68@*&UA=&-H(#T](#,I"@E["@D@ M("`@*G(@/2`J9R`]("IB(#T@,#L*"7T*"65L<V4*"7L*"2`@("!-7V5R<B@B M3&]O:W5P0V]L;W(B+"`B8V%N)W0@:&%N9&QE(&-O;&]R("5S(BP@;F%M92D[ M"@D@("`@<F5T=7)N("TQ.PH)?0H@("`@?0H@("`@96QS92!I9B`H<W1R<W1R M*&YA;64L(")R9V(Z(BDI"B`@("!["@EU;G-I9VYE9"!C:&%R("IQ(#T@*'5N M<VEG;F5D(&-H87(@*BD@<W1R8VAR*&YA;64L("<Z)RD["@EI9B`H*&UA=&-H M(#T@<W1R;&5N*"AC:&%R("HI<2DI(#T](#8I"@E["@D@("`@+RH@.G(O9R]B M("HO"@D@("`@*G(@/2`H:&5X=EMQ6S%=72`J(#(U-2D@+R`Q-3L*"2`@("`J M9R`]("AH97AV6W%;,UU=("H@,C4U*2`O(#$U.PH)("`@("IB(#T@*&AE>'9; M<5LU75T@*B`R-34I("\@,34["@E]"@EE;'-E(&EF("AM871C:"`]/2`Y*0H) M>PH)("`@("\J(#IR<B]G9R]B8B`J+PH)("`@("IR(#T@*&AE>'9;<5LQ75T@ M/#P@-"D@?"!H97AV6W%;,EU=.PH)("`@("IG(#T@*&AE>'9;<5LT75T@/#P@ M-"D@?"!H97AV6W%;-5U=.PH)("`@("IB(#T@*&AE>'9;<5LW75T@/#P@-"D@ M?"!H97AV6W%;.%U=.PH)?0H)96QS92!I9B`H;6%T8V@@/3T@,3(I"@E["@D@ M("`@+RH@.G)R<B]G9V<O8F)B("HO"@D@("`@*G(@/2`H:&5X=EMQ6S%=72`\ M/"`X*2!\("AH97AV6W%;,EU=(#P\(#0I('P@*&AE>'9;<5LS75TI.PH)("`@ M("IG(#T@*&AE>'9;<5LU75T@/#P@."D@?"`H:&5X=EMQ6S9=72`\/"`T*2!\ M("AH97AV6W%;-UU=*3L*"2`@("`J8B`]("AH97AV6W%;.5U=(#P\(#@I('P@ M*&AE>'9;<5LQ,%U=(#P\(#0I('P@*&AE>'9;<5LQ,5U=*3L*"@D@("`@*G(@ M/2`H*G(@*B`R-35,*2`O(#0P.34["@D@("`@*F<@/2`H*F<@*B`R-35,*2`O M(#0P.34["@D@("`@*F(@/2`H*F(@*B`R-35,*2`O(#0P.34["@H)?0H)96QS M92!I9B`H;6%T8V@@/3T@,34I"@E["@D@("`@*G(@/2`H:&5X=EMQ6S%=72`\ M/"`Q,BD@?"`H:&5X=EMQ6S)=72`\/"`X*2!\"@D)*&AE>'9;<5LS75T@/#P@ M-"D@?"!H97AV6W%;-%U=.PH)("`@("IG(#T@*&AE>'9;<5LV75T@/#P@,3(I M('P@*&AE>'9;<5LW75T@/#P@."D@?`H)"2AH97AV6W%;.%U=(#P\(#0I('P@ M:&5X=EMQ6SE=73L*"2`@("`J8B`]("AH97AV6W%;,3%=72`\/"`Q,BD@?"`H M:&5X=EMQ6S$R75T@/#P@."D@?`H)"2AH97AV6W%;,3-=72`\/"`T*2!\(&AE M>'9;<5LQ-%U=.PH*"2`@("`J<B`]("@J<B`J(#(U-4PI("\@-C4U,S5,.PH) M("`@("IG(#T@*"IG("H@,C4U3"D@+R`V-34S-4P["@D@("`@*F(@/2`H*F(@ M*B`R-35,*2`O(#8U-3,U3#L*"7T*"65L<V4*"7L*"2`@("!-7V5R<B@B3&]O M:W5P0V]L;W(B+"`B8V%N)W0@:&%N9&QE(&-O;&]R("5S7&XB+"!N86UE*3L* M"2`@("!R971U<FX@+3$["@E]"B`@("!]"B`@("!E;'-E"B`@("!["@DO*B!S M96%R8V@@=&AE('!R92UD969I;F5D(&-O;&]R;F%M92!D871A8F%S92`J+PH) M9F]R("AM871C:"`](#`L(&1B(#T@<F=B7V1B.R`A;6%T8V@@)B8@9&(@/"!R M9V)?9&(@*R!D8E]S:7IE.R!D8BLK*0H)>PH)("`@(&EF("AS=')C87-E8VUP M*&YA;64L(&1B+3YN86UE*2`]/2`P*0H)("`@('L*"0EM871C:"`](#$["@D) M*G(@/2!D8BT^<CL*"0DJ9R`](&1B+3YG.PH)"2IB(#T@9&(M/F(["@D@("`@ M?0H)?0H*"6EF("@A;6%T8V@I"@E["@D@("`@35]W87)N*"),;V]K=7!#;VQO M<B(L(")C;VQO<FYA;64@*"5S*2!N;W0@9F]U;F1<;B(L(&YA;64I.PH)("`@ M(')E='5R;B`M,3L*"7T*("`@('T*("`@(')E='5R;B`P.PI]"@H*<W1A=&EC M(&EN=`IR96%D7V5N=')Y*$9)3$4@*B!F<"P@:6YT("IR+"!I;G0@*F<L(&EN M="`J8BP@8VAA<B!N86UE6UTI"GL*("`@(&EN="!N.PH@("`@8VAA<B!B=69; M,C4V72P@*G`["@H@("`@:68@*"%F9V5T<RAB=68L('-I>F5O9BAB=68I+"!F M<"DI"@ER971U<FX@,#L*"B`@("!I9B`H8G5F6S!=(#T]("<A)RD*"69G971S M*&)U9BP@<VEZ96]F*&)U9BDL(&9P*3L*"B`@("!I9B`H<W-C86YF*&)U9BP@ M(B`E9"`E9"`E9"`E;B(L('(L(&<L(&(L("9N*2`\(#,I"@ER971U<FX@,#L* M"B`@("!P(#T@8G5F("L@;CL*"B`@("`O*B!S<75E97IE(&]U="!A;&P@<W!A M8V5S("HO"B`@("!W:&EL92`H*G`I"B`@("!["@EI9B`H*G`@(3T@)R`G("8F M("IP("$]("=<;B<I"@D@("`@*FYA;64K*R`]("IP.PH)<"LK.PH@("`@?0H@ M("`@*FYA;64@/2`P.PH*("`@(')E='5R;B`H9F5O9BAF<"D@?'P@9F5R<F]R 1*&9P*2D@/R`P(#H@,3L*?0H` ` end

    _________________________________________________ To unsubscribe, send the message "unsubscribe" to xforms-request@bob.usuhs.mil or see http://bob.usuhs.mil/mailserv/xforms.html XForms Home Page: http://world.std.com/~xforms List Archive: http://bob.usuhs.mil/mailserv/list-archives/ Development: http://savannah.nongnu.org/files/?group=xforms



    This archive was generated by hypermail 2b29 : Thu May 22 2003 - 11:55:31 EDT