Changeset 324

Show
Ignore:
Timestamp:
07/06/07 17:14:10 (1 year ago)
Author:
florida
Message:

Ajout mise à jour wifidog_1.3.3_rc1

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • wifidog/wifidog-client/doc/Makefile.in

    r218 r324  
    1 # Makefile.in generated by automake 1.9.6 from Makefile.am. 
     1# Makefile.in generated by automake 1.10 from Makefile.am. 
    22# @configure_input@ 
    33 
    44# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 
    5 # 2003, 2004, 2005  Free Software Foundation, Inc. 
     5# 2003, 2004, 2005, 2006  Free Software Foundation, Inc. 
    66# This Makefile.in is free software; the Free Software Foundation 
    77# gives unlimited permission to copy and/or distribute it, 
     
    1414 
    1515@SET_MAKE@ 
    16 srcdir = @srcdir@ 
    17 top_srcdir = @top_srcdir@ 
    1816VPATH = @srcdir@ 
    1917pkgdatadir = $(datadir)/@PACKAGE@ 
    2018pkglibdir = $(libdir)/@PACKAGE@ 
    2119pkgincludedir = $(includedir)/@PACKAGE@ 
    22 top_builddir = .. 
    2320am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd 
    24 INSTALL = @INSTALL@ 
    2521install_sh_DATA = $(install_sh) -c -m 644 
    2622install_sh_PROGRAM = $(install_sh) -c 
     
    4945RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ 
    5046        html-recursive info-recursive install-data-recursive \ 
    51         install-exec-recursive install-info-recursive \ 
    52         install-recursive installcheck-recursive installdirs-recursive \ 
    53         pdf-recursive ps-recursive uninstall-info-recursive \ 
    54         uninstall-recursive 
     47        install-dvi-recursive install-exec-recursive \ 
     48        install-html-recursive install-info-recursive \ 
     49        install-pdf-recursive install-ps-recursive install-recursive \ 
     50        installcheck-recursive installdirs-recursive pdf-recursive \ 
     51        ps-recursive uninstall-recursive 
     52RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ 
     53  distclean-recursive maintainer-clean-recursive 
    5554ETAGS = etags 
    5655CTAGS = ctags 
     
    5857DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 
    5958ACLOCAL = @ACLOCAL@ 
    60 AMDEP_FALSE = @AMDEP_FALSE@ 
    61 AMDEP_TRUE = @AMDEP_TRUE@ 
    6259AMTAR = @AMTAR@ 
    6360AR = @AR@ 
     
    7976DEFS = @DEFS@ 
    8077DEPDIR = @DEPDIR@ 
    81 DOC_FALSE = @DOC_FALSE@ 
    82 DOC_TRUE = @DOC_TRUE@ 
    8378DOT = @DOT@ 
    8479DOXYGEN = @DOXYGEN@ 
     
    8883ECHO_T = @ECHO_T@ 
    8984EGREP = @EGREP@ 
    90 ENABLE_DOXYGEN_FALSE = @ENABLE_DOXYGEN_FALSE@ 
    91 ENABLE_DOXYGEN_TRUE = @ENABLE_DOXYGEN_TRUE@ 
    9285EXEEXT = @EXEEXT@ 
    9386F77 = @F77@ 
    9487FFLAGS = @FFLAGS@ 
    9588GREP = @GREP@ 
     89INSTALL = @INSTALL@ 
    9690INSTALL_DATA = @INSTALL_DATA@ 
    9791INSTALL_PROGRAM = @INSTALL_PROGRAM@ 
     
    10599LTLIBOBJS = @LTLIBOBJS@ 
    106100MAINT = @MAINT@ 
    107 MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ 
    108 MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ 
    109101MAKEINFO = @MAKEINFO@ 
     102MKDIR_P = @MKDIR_P@ 
    110103OBJEXT = @OBJEXT@ 
    111104PACKAGE = @PACKAGE@ 
     
    125118WIFIDOG_MINOR_VERSION = @WIFIDOG_MINOR_VERSION@ 
    126119WIFIDOG_VERSION = @WIFIDOG_VERSION@ 
     120abs_builddir = @abs_builddir@ 
     121abs_srcdir = @abs_srcdir@ 
     122abs_top_builddir = @abs_top_builddir@ 
     123abs_top_srcdir = @abs_top_srcdir@ 
    127124ac_ct_CC = @ac_ct_CC@ 
    128125ac_ct_CXX = @ac_ct_CXX@ 
    129126ac_ct_F77 = @ac_ct_F77@ 
    130 am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ 
    131 am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ 
    132 am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ 
    133 am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ 
    134127am__include = @am__include@ 
    135128am__leading_dot = @am__leading_dot@ 
     
    143136build_os = @build_os@ 
    144137build_vendor = @build_vendor@ 
     138builddir = @builddir@ 
    145139datadir = @datadir@ 
    146140datarootdir = @datarootdir@ 
     
    173167sbindir = @sbindir@ 
    174168sharedstatedir = @sharedstatedir@ 
     169srcdir = @srcdir@ 
    175170sysconfdir = @sysconfdir@ 
    176171target_alias = @target_alias@ 
     172top_builddir = @top_builddir@ 
     173top_srcdir = @top_srcdir@ 
    177174SUBDIRS =  
    178175EXTRA_DIST = \ 
     
    219216clean-libtool: 
    220217        -rm -rf .libs _libs 
    221  
    222 distclean-libtool: 
    223         -rm -f libtool 
    224 uninstall-info-am: 
    225218 
    226219# This directory's subdirectories are mostly independent; you can cd 
     
    255248        fi; test -z "$$fail" 
    256249 
    257 mostlyclean-recursive clean-recursive distclean-recursive \ 
    258 maintainer-clean-recursive: 
     250$(RECURSIVE_CLEAN_TARGETS): 
    259251        @failcom='exit 1'; \ 
    260252        for f in x $$MAKEFLAGS; do \ 
     
    357349 
    358350distdir: $(DISTFILES) 
    359         @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ 
    360         topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ 
    361         list='$(DISTFILES)'; for file in $$list; do \ 
    362           case $$file in \ 
    363             $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ 
    364             $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ 
    365           esac; \ 
     351        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ 
     352        topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ 
     353        list='$(DISTFILES)'; \ 
     354          dist_files=`for file in $$list; do echo $$file; done | \ 
     355          sed -e "s|^$$srcdirstrip/||;t" \ 
     356              -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ 
     357        case $$dist_files in \ 
     358          */*) $(MKDIR_P) `echo "$$dist_files" | \ 
     359                           sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ 
     360                           sort -u` ;; \ 
     361        esac; \ 
     362        for file in $$dist_files; do \ 
    366363          if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ 
    367           dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ 
    368           if test "$$dir" != "$$file" && test "$$dir" != "."; then \ 
    369             dir="/$$dir"; \ 
    370             $(mkdir_p) "$(distdir)$$dir"; \ 
    371           else \ 
    372             dir=''; \ 
    373           fi; \ 
    374364          if test -d $$d/$$file; then \ 
     365            dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ 
    375366            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ 
    376367              cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ 
     
    386377          if test "$$subdir" = .; then :; else \ 
    387378            test -d "$(distdir)/$$subdir" \ 
    388             || $(mkdir_p) "$(distdir)/$$subdir" \ 
     379            || $(MKDIR_P) "$(distdir)/$$subdir" \ 
    389380            || exit 1; \ 
    390381            distdir=`$(am__cd) $(distdir) && pwd`; \ 
     
    394385                top_distdir="$$top_distdir" \ 
    395386                distdir="$$distdir/$$subdir" \ 
     387                am__remove_distdir=: \ 
     388                am__skip_length_check=: \ 
    396389                distdir) \ 
    397390              || exit 1; \ 
     
    436429distclean: distclean-recursive 
    437430        -rm -f Makefile 
    438 distclean-am: clean-am distclean-generic distclean-libtool \ 
    439         distclean-tags 
     431distclean-am: clean-am distclean-generic distclean-tags 
    440432 
    441433dvi: dvi-recursive 
     
    453445        $(MAKE) $(AM_MAKEFLAGS) install-data-hook 
    454446 
     447install-dvi: install-dvi-recursive 
     448 
    455449install-exec-am: 
    456450 
     451install-html: install-html-recursive 
     452 
    457453install-info: install-info-recursive 
    458454 
    459455install-man: 
     456 
     457install-pdf: install-pdf-recursive 
     458 
     459install-ps: install-ps-recursive 
    460460 
    461461installcheck-am: 
     
    478478ps-am: 
    479479 
    480 uninstall-am: uninstall-info-am 
     480uninstall-am: 
    481481        @$(NORMAL_INSTALL) 
    482482        $(MAKE) $(AM_MAKEFLAGS) uninstall-hook 
    483483 
    484 uninstall-info: uninstall-info-recursive 
    485  
    486 .PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ 
    487         clean clean-generic clean-libtool clean-local clean-recursive \ 
    488         ctags ctags-recursive dist-hook distclean distclean-generic \ 
    489         distclean-libtool distclean-recursive distclean-tags distdir \ 
    490         dvi dvi-am html html-am info info-am install install-am \ 
    491         install-data install-data-am install-data-hook install-exec \ 
    492         install-exec-am install-info install-info-am install-man \ 
     484.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ 
     485        install-data-am install-strip uninstall-am 
     486 
     487.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ 
     488        all all-am check check-am clean clean-generic clean-libtool \ 
     489        clean-local ctags ctags-recursive dist-hook distclean \ 
     490        distclean-generic distclean-libtool distclean-tags distdir dvi \ 
     491        dvi-am html html-am info info-am install install-am \ 
     492        install-data install-data-am install-data-hook install-dvi \ 
     493        install-dvi-am install-exec install-exec-am install-html \ 
     494        install-html-am install-info install-info-am install-man \ 
     495        install-pdf install-pdf-am install-ps install-ps-am \ 
    493496        install-strip installcheck installcheck-am installdirs \ 
    494497        installdirs-am maintainer-clean maintainer-clean-generic \ 
    495         maintainer-clean-local maintainer-clean-recursive mostlyclean \ 
    496         mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ 
    497         pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ 
    498         uninstall-hook uninstall-info-am 
     498        maintainer-clean-local mostlyclean mostlyclean-generic \ 
     499        mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ 
     500        uninstall uninstall-am uninstall-hook 
    499501 
    500502 
  • wifidog/wifidog-client/doc/html/annotated.html

    r290 r324  
    3636  <tr><td class="indexkey"><a class="el" href="structs__config.html">s_config</a></td><td class="indexvalue"></td></tr> 
    3737</table> 
    38 <hr size="1"><address style="align: right;"><small>Generated on Sat Jan 6 18:51:45 2007 for WifiDog by&nbsp; 
     38<hr size="1"><address style="align: right;"><small>Generated on Sun Jun 24 00:29:52 2007 for WifiDog by&nbsp; 
    3939<a href="http://www.doxygen.org/index.html"> 
    4040<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address> 
  • wifidog/wifidog-client/doc/html/api_8c-source.html

    r290 r324  
    2828<a name="l00015"></a>00015 <span class="comment">**</span> 
    2929<a name="l00016"></a>00016 <span class="comment">**</span> 
    30 <a name="l00017"></a>00017 <span class="comment">** $Id: api.c 290 2004-11-22 21:45:58Z alexcv $</span> 
     30<a name="l00017"></a>00017 <span class="comment">** $Id: api.c 1239 2007-05-30 19:21:21Z david $</span> 
    3131<a name="l00018"></a>00018 <span class="comment">**</span> 
    3232<a name="l00019"></a>00019 <span class="comment">*/</span> 
     
    496496<a name="l00507"></a>00507                                                 *cp = 0; 
    497497<a name="l00508"></a>00508                                                 strncpy( 
    498 <a name="l00509"></a>00509                                                    r-&gt;<a class="code" href="structrequest.html#1e25aac8f9b3f8d3a2a89f58fb12bb65">request</a>.<a class="code" href="structhttpReq.html#b26176adc1e8a9b6dd4217ec4855090d">authPassword</a>
     498<a name="l00509"></a>00509                                                    r-&gt;<a class="code" href="structrequest.html#1e25aac8f9b3f8d3a2a89f58fb12bb65">request</a>.authPassword
    499499<a name="l00510"></a>00510                                                    cp+1, HTTP_MAX_AUTH); 
    500500<a name="l00511"></a>00511                                         } 
    501 <a name="l00512"></a>00512                                         strncpy(r-&gt;<a class="code" href="structrequest.html#1e25aac8f9b3f8d3a2a89f58fb12bb65">request</a>.<a class="code" href="structhttpReq.html#a8d46c518de00329302ec18b1b7ea0c6">authUser</a>,  
     501<a name="l00512"></a>00512                                         strncpy(r-&gt;<a class="code" href="structrequest.html#1e25aac8f9b3f8d3a2a89f58fb12bb65">request</a>.authUser,  
    502502<a name="l00513"></a>00513                                                 authBuf, HTTP_MAX_AUTH); 
    503503<a name="l00514"></a>00514                                 } 
     
    510510<a name="l00521"></a>00521                                 <span class="keywordflow">if</span>(cp) 
    511511<a name="l00522"></a>00522                                 { 
    512 <a name="l00523"></a>00523                                         strncpy(r-&gt;<a class="code" href="structrequest.html#1e25aac8f9b3f8d3a2a89f58fb12bb65">request</a>.<a class="code" href="structhttpReq.html#4106acb849303d8162cd5ae9932328e9">referer</a>,cp, 
     512<a name="l00523"></a>00523                                         strncpy(r-&gt;<a class="code" href="structrequest.html#1e25aac8f9b3f8d3a2a89f58fb12bb65">request</a>.referer,cp, 
    513513<a name="l00524"></a>00524                                                 HTTP_MAX_URL); 
    514514<a name="l00525"></a>00525                                 } 
     
    546546<a name="l00557"></a>00557                                 <span class="keywordflow">if</span>(cp) 
    547547<a name="l00558"></a>00558                                 { 
    548 <a name="l00559"></a>00559                                         strncpy(r-&gt;<a class="code" href="structrequest.html#1e25aac8f9b3f8d3a2a89f58fb12bb65">request</a>.<a class="code" href="structhttpReq.html#defc1a0486b9c5523fdba420604fed04">contentType</a>,cp, 
     548<a name="l00559"></a>00559                                         strncpy(r-&gt;<a class="code" href="structrequest.html#1e25aac8f9b3f8d3a2a89f58fb12bb65">request</a>.contentType,cp, 
    549549<a name="l00560"></a>00560                                                 HTTP_MAX_URL); 
    550550<a name="l00561"></a>00561                                 } 
     
    561561<a name="l00572"></a>00572         } 
    562562<a name="l00573"></a>00573  
    563 <a name="l00574"></a>00574         <span class="comment">/*</span> 
    564 <a name="l00575"></a>00575 <span class="comment">        ** Process and POST data</span> 
    565 <a name="l00576"></a>00576 <span class="comment">        */</span> 
    566 <a name="l00577"></a>00577 <span class="preprocessor">#if 0</span> 
    567 <a name="l00578"></a>00578 <span class="preprocessor"></span>        <span class="keywordflow">if</span> (r-&gt;<a class="code" href="structrequest.html#1e25aac8f9b3f8d3a2a89f58fb12bb65">request</a>.<a class="code" href="structhttpReq.html#c311d136dc194681da926737a9ce0f98">contentLength</a> &gt; 0) 
    568 <a name="l00579"></a>00579         { 
    569 <a name="l00580"></a>00580                 bzero(buf, HTTP_MAX_LEN); 
    570 <a name="l00581"></a>00581                 _httpd_readBuf(r, buf, r-&gt;<a class="code" href="structrequest.html#1e25aac8f9b3f8d3a2a89f58fb12bb65">request</a>.<a class="code" href="structhttpReq.html#c311d136dc194681da926737a9ce0f98">contentLength</a>); 
    571 <a name="l00582"></a>00582                 _httpd_storeData(r, buf); 
    572 <a name="l00583"></a>00583                  
    573 <a name="l00584"></a>00584         } 
    574 <a name="l00585"></a>00585 <span class="preprocessor">#endif</span> 
    575 <a name="l00586"></a>00586 <span class="preprocessor"></span>         
    576 <a name="l00587"></a>00587         <span class="comment">/*</span> 
    577 <a name="l00588"></a>00588 <span class="comment">        ** Process any URL data</span> 
    578 <a name="l00589"></a>00589 <span class="comment">        */</span> 
    579 <a name="l00590"></a>00590         cp = index(r-&gt;<a class="code" href="structrequest.html#1e25aac8f9b3f8d3a2a89f58fb12bb65">request</a>.<a class="code" href="structhttpReq.html#e99c9c116c2bb6f0c79d0bde882592d0">path</a>,<span class="charliteral">'?'</span>); 
    580 <a name="l00591"></a>00591         <span class="keywordflow">if</span> (cp != NULL) 
    581 <a name="l00592"></a>00592         { 
    582 <a name="l00593"></a>00593                 *cp = 0; 
    583 <a name="l00594"></a>00594                 cp++
    584 <a name="l00595"></a>00595                 _httpd_storeData(r, cp); 
    585 <a name="l00596"></a>00596         } 
    586 <a name="l00597"></a>00597         <span class="keywordflow">return</span>(0)
    587 <a name="l00598"></a>00598 } 
    588 <a name="l00599"></a>00599  
    589 <a name="l00600"></a>00600  
    590 <a name="l00601"></a>00601 <span class="keywordtype">void</span> httpdEndRequest(request *r) 
    591 <a name="l00602"></a>00602 { 
    592 <a name="l00603"></a>00603         _httpd_freeVariables(r-&gt;<a class="code" href="structrequest.html#a6cf396396d895f2a515c4fc00bf6c6b">variables</a>); 
    593 <a name="l00604"></a>00604         shutdown(r-&gt;<a class="code" href="structrequest.html#761166d41596f6cfe9efc2ed1024ece1">clientSock</a>,2); 
    594 <a name="l00605"></a>00605         close(r-&gt;<a class="code" href="structrequest.html#761166d41596f6cfe9efc2ed1024ece1">clientSock</a>); 
    595 <a name="l00606"></a>00606         free(r); 
    596 <a name="l00607"></a>00607 } 
    597 <a name="l00608"></a>00608  
    598 <a name="l00609"></a>00609  
    599 <a name="l00610"></a>00610 <span class="keywordtype">void</span> httpdFreeVariables(request *r) 
    600 <a name="l00611"></a>00611 { 
    601 <a name="l00612"></a>00612         _httpd_freeVariables(r-&gt;<a class="code" href="structrequest.html#a6cf396396d895f2a515c4fc00bf6c6b">variables</a>); 
    602 <a name="l00613"></a>00613 } 
     563<a name="l00574"></a>00574  
     564<a name="l00575"></a>00575 <span class="preprocessor">#if 0</span> 
     565<a name="l00576"></a>00576 <span class="preprocessor"></span>        <span class="comment">/* XXX: For WifiDog, we only process the query string parameters</span> 
     566<a name="l00577"></a>00577 <span class="comment">           but keep the GET variables in the request.query!</span> 
     567<a name="l00578"></a>00578 <span class="comment">        */</span> 
     568<a name="l00579"></a>00579         <span class="comment">/*</span> 
     569<a name="l00580"></a>00580 <span class="comment">        ** Process and POST data</span> 
     570<a name="l00581"></a>00581 <span class="comment">        */</span> 
     571<a name="l00582"></a>00582         <span class="keywordflow">if</span> (r-&gt;<a class="code" href="structrequest.html#1e25aac8f9b3f8d3a2a89f58fb12bb65">request</a>.<a class="code" href="structhttpReq.html#c311d136dc194681da926737a9ce0f98">contentLength</a> &gt; 0) 
     572<a name="l00583"></a>00583         { 
     573<a name="l00584"></a>00584                 bzero(buf, HTTP_MAX_LEN); 
     574<a name="l00585"></a>00585                 _httpd_readBuf(r, buf, r-&gt;<a class="code" href="structrequest.html#1e25aac8f9b3f8d3a2a89f58fb12bb65">request</a>.<a class="code" href="structhttpReq.html#c311d136dc194681da926737a9ce0f98">contentLength</a>); 
     575<a name="l00586"></a>00586                 _httpd_storeData(r, buf); 
     576<a name="l00587"></a>00587                  
     577<a name="l00588"></a>00588         } 
     578<a name="l00589"></a>00589 <span class="preprocessor">#endif</span> 
     579<a name="l00590"></a>00590 <span class="preprocessor"></span> 
     580<a name="l00591"></a>00591         <span class="comment">/*</span> 
     581<a name="l00592"></a>00592 <span class="comment">        ** Process any URL data</span> 
     582<a name="l00593"></a>00593 <span class="comment">        */</span> 
     583<a name="l00594"></a>00594         cp = index(r-&gt;<a class="code" href="structrequest.html#1e25aac8f9b3f8d3a2a89f58fb12bb65">request</a>.<a class="code" href="structhttpReq.html#e99c9c116c2bb6f0c79d0bde882592d0">path</a>,<span class="charliteral">'?'</span>)
     584<a name="l00595"></a>00595         <span class="keywordflow">if</span> (cp != NULL) 
     585<a name="l00596"></a>00596         { 
     586<a name="l00597"></a>00597                 *cp++ = 0
     587<a name="l00598"></a>00598                 strncpy(r-&gt;<a class="code" href="structrequest.html#1e25aac8f9b3f8d3a2a89f58fb12bb65">request</a>.<a class="code" href="structhttpReq.html#baa78e58c13224512d41c25afe79146e">query</a>, cp, <span class="keyword">sizeof</span>(r-&gt;<a class="code" href="structrequest.html#1e25aac8f9b3f8d3a2a89f58fb12bb65">request</a>.<a class="code" href="structhttpReq.html#baa78e58c13224512d41c25afe79146e">query</a>)); 
     588<a name="l00599"></a>00599                 _httpd_storeData(r, cp); 
     589<a name="l00600"></a>00600         } 
     590<a name="l00601"></a>00601  
     591<a name="l00602"></a>00602         <span class="keywordflow">return</span>(0); 
     592<a name="l00603"></a>00603 } 
     593<a name="l00604"></a>00604  
     594<a name="l00605"></a>00605  
     595<a name="l00606"></a>00606 <span class="keywordtype">void</span> httpdEndRequest(request *r) 
     596<a name="l00607"></a>00607 { 
     597<a name="l00608"></a>00608         _httpd_freeVariables(r-&gt;<a class="code" href="structrequest.html#a6cf396396d895f2a515c4fc00bf6c6b">variables</a>); 
     598<a name="l00609"></a>00609         shutdown(r-&gt;<a class="code" href="structrequest.html#761166d41596f6cfe9efc2ed1024ece1">clientSock</a>,2); 
     599<a name="l00610"></a>00610         close(r-&gt;<a class="code" href="structrequest.html#761166d41596f6cfe9efc2ed1024ece1">clientSock</a>); 
     600<a name="l00611"></a>00611         free(r); 
     601<a name="l00612"></a>00612 } 
     602<a name="l00613"></a>00613  
    603603<a name="l00614"></a>00614  
    604 <a name="l00615"></a>00615  
    605 <a name="l00616"></a>00616  
    606 <a name="l00617"></a>00617 <span class="keywordtype">void</span> httpdDumpVariables(request *r) 
    607 <a name="l00618"></a>00618 { 
    608 <a name="l00619"></a>00619         <a class="code" href="struct__httpd__var.html">httpVar</a> *curVar, 
    609 <a name="l00620"></a>00620                 *curVal; 
     604<a name="l00615"></a>00615 <span class="keywordtype">void</span> httpdFreeVariables(request *r) 
     605<a name="l00616"></a>00616 { 
     606<a name="l00617"></a>00617         _httpd_freeVariables(r-&gt;<a class="code" href="structrequest.html#a6cf396396d895f2a515c4fc00bf6c6b">variables</a>); 
     607<a name="l00618"></a>00618 } 
     608<a name="l00619"></a>00619  
     609<a name="l00620"></a>00620  
    610610<a name="l00621"></a>00621  
    611 <a name="l00622"></a>00622         curVar = r-&gt;<a class="code" href="structrequest.html#a6cf396396d895f2a515c4fc00bf6c6b">variables</a>; 
    612 <a name="l00623"></a>00623         <span class="keywordflow">while</span>(curVar) 
    613 <a name="l00624"></a>00624         { 
    614 <a name="l00625"></a>00625                 printf(<span class="stringliteral">"Variable '%s'\n"</span>, curVar-&gt;<a class="code" href="struct__httpd__var.html#77d3c22c1b1257aeea66ef2f5af322a7">name</a>)
    615 <a name="l00626"></a>00626                 curVal = curVar; 
    616 <a name="l00627"></a>00627                 <span class="keywordflow">while</span>(curVal) 
    617 <a name="l00628"></a>00628                 { 
    618 <a name="l00629"></a>00629                         printf(<span class="stringliteral">"\t= '%s'\n"</span>,curVal-&gt;<a class="code" href="struct__httpd__var.html#6c0032e6d6809bdcf5ceb67410b34703">value</a>); 
    619 <a name="l00630"></a>00630                         curVal = curVal-&gt;<a class="code" href="struct__httpd__var.html#df637dd294167ab2d01599e39d857ac4">nextValue</a>
    620 <a name="l00631"></a>00631                 } 
    621 <a name="l00632"></a>00632                 curVar = curVar-&gt;<a class="code" href="struct__httpd__var.html#7ae681e829e56cfa116bf85449182093">nextVariable</a>; 
    622 <a name="l00633"></a>00633         } 
    623 <a name="l00634"></a>00634 } 
    624 <a name="l00635"></a>00635  
    625 <a name="l00636"></a>00636 <span class="keywordtype">void</span> httpdSetFileBase(server, path) 
    626 <a name="l00637"></a>00637         <a class="code" href="structhttpd.html">httpd</a>   *server
    627 <a name="l00638"></a>00638         <span class="keywordtype">char</span>    *path; 
    628 <a name="l00639"></a>00639 { 
    629 <a name="l00640"></a>00640         strncpy(server-&gt;fileBasePath, path, HTTP_MAX_URL); 
    630 <a name="l00641"></a>00641 } 
    631 <a name="l00642"></a>00642  
    632 <a name="l00643"></a>00643  
    633 <a name="l00644"></a>00644 <span class="keywordtype">int</span> httpdAddFileContent(server, dir, name, indexFlag, preload, path) 
    634 <a name="l00645"></a>00645         <a class="code" href="structhttpd.html">httpd</a>   *server
    635 <a name="l00646"></a>00646         <span class="keywordtype">char</span>    *dir, 
    636 <a name="l00647"></a>00647                 *name; 
    637 <a name="l00648"></a>00648         <span class="keywordtype">int</span>     (*preload)(); 
    638 <a name="l00649"></a>00649         <span class="keywordtype">int</span>     indexFlag; 
    639 <a name="l00650"></a>00650         <span class="keywordtype">char</span>    *path
    640 <a name="l00651"></a>00651 { 
    641 <a name="l00652"></a>00652         httpDir *dirPtr
    642 <a name="l00653"></a>00653         <a class="code" href="struct__httpd__content.html">httpContent</a> *newEntry
    643 <a name="l00654"></a>00654  
    644 <a name="l00655"></a>00655         dirPtr = _httpd_findContentDir(server, dir, HTTP_TRUE)
    645 <a name="l00656"></a>00656         newEntry =  malloc(<span class="keyword">sizeof</span>(<a class="code" href="struct__httpd__content.html">httpContent</a>)); 
    646 <a name="l00657"></a>00657         <span class="keywordflow">if</span> (newEntry == NULL) 
    647 <a name="l00658"></a>00658                 <span class="keywordflow">return</span>(-1)
    648 <a name="l00659"></a>00659         bzero(newEntry,<span class="keyword">sizeof</span>(<a class="code" href="struct__httpd__content.html">httpContent</a>)); 
    649 <a name="l00660"></a>00660         newEntry-&gt;<a class="code" href="struct__httpd__content.html#5f20e383abe7d05a315f02d7d37c7291">name</a> = strdup(name); 
    650 <a name="l00661"></a>00661         newEntry-&gt;<a class="code" href="struct__httpd__content.html#84dfed3d65d2f07d27442cdfb94f56a4">type</a> = HTTP_FILE
    651 <a name="l00662"></a>00662         newEntry-&gt;<a class="code" href="struct__httpd__content.html#02878770ba8b1143e08e678f0ca0da12">indexFlag</a> = indexFlag; 
    652 <a name="l00663"></a>00663         newEntry-&gt;<a class="code" href="struct__httpd__content.html#70cfe712fd72d9138f8cda732d34d097">preload</a> = preload
    653 <a name="l00664"></a>00664         newEntry-&gt;<a class="code" href="struct__httpd__content.html#aabc5e64c334e035d4ddb9e46487ee7b">next</a> = dirPtr-&gt;<a class="code" href="struct__httpd__dir.html#7456ca7da5e890d2e85a07396394b77f">entries</a>
    654 <a name="l00665"></a>00665         dirPtr-&gt;<a class="code" href="struct__httpd__dir.html#7456ca7da5e890d2e85a07396394b77f">entries</a> = newEntry
    655 <a name="l00666"></a>00666         <span class="keywordflow">if</span> (*path == <span class="charliteral">'/'</span>) 
    656 <a name="l00667"></a>00667         { 
    657 <a name="l00668"></a>00668                 <span class="comment">/* Absolute path */</span> 
    658 <a name="l00669"></a>00669                 newEntry-&gt;<a class="code" href="struct__httpd__content.html#d36079509c38ff3d00c53c87e20f22a5">path</a> = strdup(path)
    659 <a name="l00670"></a>00670         } 
    660 <a name="l00671"></a>00671         <span class="keywordflow">else</span> 
     611<a name="l00622"></a>00622 <span class="keywordtype">void</span> httpdDumpVariables(request *r) 
     612<a name="l00623"></a>00623 { 
     613<a name="l00624"></a>00624         <a class="code" href="struct__httpd__var.html">httpVar</a> *curVar, 
     614<a name="l00625"></a>00625                 *curVal
     615<a name="l00626"></a>00626  
     616<a name="l00627"></a>00627         curVar = r-&gt;<a class="code" href="structrequest.html#a6cf396396d895f2a515c4fc00bf6c6b">variables</a>; 
     617<a name="l00628"></a>00628         <span class="keywordflow">while</span>(curVar) 
     618<a name="l00629"></a>00629         { 
     619<a name="l00630"></a>00630                 printf(<span class="stringliteral">"Variable '%s'\n"</span>, curVar-&gt;<a class="code" href="struct__httpd__var.html#77d3c22c1b1257aeea66ef2f5af322a7">name</a>)
     620<a name="l00631"></a>00631                 curVal = curVar; 
     621<a name="l00632"></a>00632                 <span class="keywordflow">while</span>(curVal) 
     622<a name="l00633"></a>00633                 { 
     623<a name="l00634"></a>00634                         printf(<span class="stringliteral">"\t= '%s'\n"</span>,curVal-&gt;<a class="code" href="struct__httpd__var.html#6c0032e6d6809bdcf5ceb67410b34703">value</a>); 
     624<a name="l00635"></a>00635                         curVal = curVal-&gt;<a class="code" href="struct__httpd__var.html#df637dd294167ab2d01599e39d857ac4">nextValue</a>; 
     625<a name="l00636"></a>00636                 } 
     626<a name="l00637"></a>00637                 curVar = curVar-&gt;<a class="code" href="struct__httpd__var.html#7ae681e829e56cfa116bf85449182093">nextVariable</a>
     627<a name="l00638"></a>00638         } 
     628<a name="l00639"></a>00639 } 
     629<a name="l00640"></a>00640  
     630<a name="l00641"></a>00641 <span class="keywordtype">void</span> httpdSetFileBase(server, path) 
     631<a name="l00642"></a>00642         <a class="code" href="structhttpd.html">httpd</a>   *server; 
     632<a name="l00643"></a>00643         <span class="keywordtype">char</span>    *path; 
     633<a name="l00644"></a>00644 { 
     634<a name="l00645"></a>00645         strncpy(server-&gt;fileBasePath, path, HTTP_MAX_URL)
     635<a name="l00646"></a>00646 } 
     636<a name="l00647"></a>00647  
     637<a name="l00648"></a>00648  
     638<a name="l00649"></a>00649 <span class="keywordtype">int</span> httpdAddFileContent(server, dir, name, indexFlag, preload, path) 
     639<a name="l00650"></a>00650         <a class="code" href="structhttpd.html">httpd</a>   *server
     640<a name="l00651"></a>00651         <span class="keywordtype">char</span>    *dir, 
     641<a name="l00652"></a>00652                 *name
     642<a name="l00653"></a>00653         <span class="keywordtype">int</span>     (*preload)()
     643<a name="l00654"></a>00654         <span class="keywordtype">int</span>     indexFlag; 
     644<a name="l00655"></a>00655         <span class="keywordtype">char</span>    *path
     645<a name="l00656"></a>00656 { 
     646<a name="l00657"></a>00657         httpDir *dirPtr; 
     647<a name="l00658"></a>00658         <a class="code" href="struct__httpd__content.html">httpContent</a> *newEntry
     648<a name="l00659"></a>00659  
     649<a name="l00660"></a>00660         dirPtr = _httpd_findContentDir(server, dir, HTTP_TRUE); 
     650<a name="l00661"></a>00661         newEntry =  malloc(<span class="keyword">sizeof</span>(<a class="code" href="struct__httpd__content.html">httpContent</a>))
     651<a name="l00662"></a>00662         <span class="keywordflow">if</span> (newEntry == NULL) 
     652<a name="l00663"></a>00663                 <span class="keywordflow">return</span>(-1)
     653<a name="l00664"></a>00664         bzero(newEntry,<span class="keyword">sizeof</span>(<a class="code" href="struct__httpd__content.html">httpContent</a>))
     654<a name="l00665"></a>00665         newEntry-&gt;<a class="code" href="struct__httpd__content.html#5f20e383abe7d05a315f02d7d37c7291">name</a> = strdup(name)
     655<a name="l00666"></a>00666         newEntry-&gt;<a class="code" href="struct__httpd__content.html#84dfed3d65d2f07d27442cdfb94f56a4">type</a> = HTTP_FILE; 
     656<a name="l00667"></a>00667         newEntry-&gt;<a class="code" href="struct__httpd__content.html#02878770ba8b1143e08e678f0ca0da12">indexFlag</a> = indexFlag; 
     657<a name="l00668"></a>00668         newEntry-&gt;<a class="code" href="struct__httpd__content.html#70cfe712fd72d9138f8cda732d34d097">preload</a> = preload; 
     658<a name="l00669"></a>00669         newEntry-&gt;<a class="code" href="struct__httpd__content.html#aabc5e64c334e035d4ddb9e46487ee7b">next</a> = dirPtr-&gt;<a class="code" href="struct__httpd__dir.html#7456ca7da5e890d2e85a07396394b77f">entries</a>
     659<a name="l00670"></a>00670         dirPtr-&gt;<a class="code" href="struct__httpd__dir.html#7456ca7da5e890d2e85a07396394b77f">entries</a> = newEntry; 
     660<a name="l00671"></a>00671         <span class="keywordflow">if</span> (*path == <span class="charliteral">'/'</span>) 
    661661<a name="l00672"></a>00672         { 
    662 <a name="l00673"></a>00673                 <span class="comment">/* Path relative to base path */</span> 
    663 <a name="l00674"></a>00674                 newEntry-&gt;<a class="code" href="struct__httpd__content.html#d36079509c38ff3d00c53c87e20f22a5">path</a> = malloc(strlen(server-&gt;fileBasePath) + 
    664 <a name="l00675"></a>00675                         strlen(path) + 2); 
    665 <a name="l00676"></a>00676                 snprintf(newEntry-&gt;<a class="code" href="struct__httpd__content.html#d36079509c38ff3d00c53c87e20f22a5">path</a>, HTTP_MAX_URL, <span class="stringliteral">"%s/%s"</span>, 
    666 <a name="l00677"></a>00677                         server-&gt;fileBasePath, path); 
    667 <a name="l00678"></a>00678         } 
    668 <a name="l00679"></a>00679         <span class="keywordflow">return</span>(0); 
    669 <a name="l00680"></a>00680 } 
    670 <a name="l00681"></a>00681  
    671 <a name="l00682"></a>00682  
    672 <a name="l00683"></a>00683  
    673 <a name="l00684"></a>00684 <span class="keywordtype">int</span> httpdAddWildcardContent(server, dir, preload, path) 
    674 <a name="l00685"></a>00685         <a class="code" href="structhttpd.html">httpd</a>   *server; 
    675 <a name="l00686"></a>00686         <span class="keywordtype">char</span>    *dir; 
    676 <a name="l00687"></a>00687         <span class="keywordtype">int</span>     (*preload)(); 
    677 <a name="l00688"></a>00688         <span class="keywordtype">char</span>    *path; 
    678 <a name="l00689"></a>00689 { 
    679 <a name="l00690"></a>00690         httpDir *dirPtr; 
    680 <a name="l00691"></a>00691         <a class="code" href="struct__httpd__content.html">httpContent</a> *newEntry
    681 <a name="l00692"></a>00692  
    682 <a name="l00693"></a>00693         dirPtr = _httpd_findContentDir(server, dir, HTTP_TRUE)
    683 <a name="l00694"></a>00694         newEntry =  malloc(<span class="keyword">sizeof</span>(<a class="code" href="struct__httpd__content.html">httpContent</a>)); 
    684 <a name="l00695"></a>00695         <span class="keywordflow">if</span> (newEntry == NULL) 
    685 <a name="l00696"></a>00696                 <span class="keywordflow">return</span>(-1)
    686 <a name="l00697"></a>00697         bzero(newEntry,<span class="keyword">sizeof</span>(<a class="code" href="struct__httpd__content.html">httpContent</a>)); 
    687 <a name="l00698"></a>00698         newEntry-&gt;<a class="code" href="struct__httpd__content.html#5f20e383abe7d05a315f02d7d37c7291">name</a> = NULL
    688 <a name="l00699"></a>00699         newEntry-&gt;<a class="code" href="struct__httpd__content.html#84dfed3d65d2f07d27442cdfb94f56a4">type</a> = HTTP_WILDCARD
    689 <a name="l00700"></a>00700         newEntry-&gt;<a class="code" href="struct__httpd__content.html#02878770ba8b1143e08e678f0ca0da12">indexFlag</a> = HTTP_FALSE; 
    690 <a name="l00701"></a>00701         newEntry-&gt;<a class="code" href="struct__httpd__content.html#70cfe712fd72d9138f8cda732d34d097">preload</a> = preload
    691 <a name="l00702"></a>00702         newEntry-&gt;<a class="code" href="struct__httpd__content.html#aabc5e64c334e035d4ddb9e46487ee7b">next</a> = dirPtr-&gt;<a class="code" href="struct__httpd__dir.html#7456ca7da5e890d2e85a07396394b77f">entries</a>
    692 <a name="l00703"></a>00703         dirPtr-&gt;<a class="code" href="struct__httpd__dir.html#7456ca7da5e890d2e85a07396394b77f">entries</a> = newEntry
    693 <a name="l00704"></a>00704         <span class="keywordflow">if</span> (*path == <span class="charliteral">'/'</span>) 
    694 <a name="l00705"></a>00705         { 
    695 <a name="l00706"></a>00706                 <span class="comment">/* Absolute path */</span> 
    696 <a name="l00707"></a>00707                 newEntry-&gt;<a class="code" href="struct__httpd__content.html#d36079509c38ff3d00c53c87e20f22a5">path</a> = strdup(path)
    697 <a name="l00708"></a>00708         } 
    698 <a name="l00709"></a>00709         <span class="keywordflow">else</span> 
     662<a name="l00673"></a>00673                 <span class="comment">/* Absolute path */</span> 
     663<a name="l00674"></a>00674                 newEntry-&gt;<a class="code" href="struct__httpd__content.html#d36079509c38ff3d00c53c87e20f22a5">path</a> = strdup(path); 
     664<a name="l00675"></a>00675         } 
     665<a name="l00676"></a>00676         <span class="keywordflow">else</span> 
     666<a name="l00677"></a>00677         { 
     667<a name="l00678"></a>00678                 <span class="comment">/* Path relative to base path */</span> 
     668<a name="l00679"></a>00679                 newEntry-&gt;<a class="code" href="struct__httpd__content.html#d36079509c38ff3d00c53c87e20f22a5">path</a> = malloc(strlen(server-&gt;fileBasePath) + 
     669<a name="l00680"></a>00680                         strlen(path) + 2); 
     670<a name="l00681"></a>00681                 snprintf(newEntry-&gt;<a class="code" href="struct__httpd__content.html#d36079509c38ff3d00c53c87e20f22a5">path</a>, HTTP_MAX_URL, <span class="stringliteral">"%s/%s"</span>, 
     671<a name="l00682"></a>00682                         server-&gt;fileBasePath, path); 
     672<a name="l00683"></a>00683         } 
     673<a name="l00684"></a>00684         <span class="keywordflow">return</span>(0); 
     674<a name="l00685"></a>00685 } 
     675<a name="l00686"></a>00686  
     676<a name="l00687"></a>00687  
     677<a name="l00688"></a>00688  
     678<a name="l00689"></a>00689 <span class="keywordtype">int</span> httpdAddWildcardContent(server, dir, preload, path) 
     679<a name="l00690"></a>00690         <a class="code" href="structhttpd.html">httpd</a>   *server; 
     680<a name="l00691"></a>00691         <span class="keywordtype">char</span>    *dir
     681<a name="l00692"></a>00692         <span class="keywordtype">int</span>     (*preload)(); 
     682<a name="l00693"></a>00693         <span class="keywordtype">char</span>    *path
     683<a name="l00694"></a>00694 { 
     684<a name="l00695"></a>00695         httpDir *dirPtr; 
     685<a name="l00696"></a>00696         <a class="code" href="struct__httpd__content.html">httpContent</a> *newEntry
     686<a name="l00697"></a>00697  
     687<a name="l00698"></a>00698         dirPtr = _httpd_findContentDir(server, dir, HTTP_TRUE)
     688<a name="l00699"></a>00699         newEntry =  malloc(<span class="keyword">sizeof</span>(<a class="code" href="struct__httpd__content.html">httpContent</a>))
     689<a name="l00700"></a>00700         <span class="keywordflow">if</span> (newEntry == NULL) 
     690<a name="l00701"></a>00701                 <span class="keywordflow">return</span>(-1)
     691<a name="l00702"></a>00702         bzero(newEntry,<span class="keyword">sizeof</span>(<a class="code" href="struct__httpd__content.html">httpContent</a>))
     692<a name="l00703"></a>00703         newEntry-&gt;<a class="code" href="struct__httpd__content.html#5f20e383abe7d05a315f02d7d37c7291">name</a> = NULL
     693<a name="l00704"></a>00704         newEntry-&gt;<a class="code" href="struct__httpd__content.html#84dfed3d65d2f07d27442cdfb94f56a4">type</a> = HTTP_WILDCARD; 
     694<a name="l00705"></a>00705         newEntry-&gt;<a class="code" href="struct__httpd__content.html#02878770ba8b1143e08e678f0ca0da12">indexFlag</a> = HTTP_FALSE; 
     695<a name="l00706"></a>00706         newEntry-&gt;<a class="code" href="struct__httpd__content.html#70cfe712fd72d9138f8cda732d34d097">preload</a> = preload; 
     696<a name="l00707"></a>00707         newEntry-&gt;<a class="code" href="struct__httpd__content.html#aabc5e64c334e035d4ddb9e46487ee7b">next</a> = dirPtr-&gt;<a class="code" href="struct__httpd__dir.html#7456ca7da5e890d2e85a07396394b77f">entries</a>
     697<a name="l00708"></a>00708         dirPtr-&gt;<a class="code" href="struct__httpd__dir.html#7456ca7da5e890d2e85a07396394b77f">entries</a> = newEntry; 
     698<a name="l00709"></a>00709         <span class="keywordflow">if</span> (*path == <span class="charliteral">'/'</span>) 
    699699<a name="l00710"></a>00710         { 
    700 <a name="l00711"></a>00711                 <span class="comment">/* Path relative to base path */</span> 
    701 <a name="l00712"></a>00712                 newEntry-&gt;<a class="code" href="struct__httpd__content.html#d36079509c38ff3d00c53c87e20f22a5">path</a> = malloc(strlen(server-&gt;fileBasePath) + 
    702 <a name="l00713"></a>00713                         strlen(path) + 2); 
    703 <a name="l00714"></a>00714                 snprintf(newEntry-&gt;<a class="code" href="struct__httpd__content.html#d36079509c38ff3d00c53c87e20f22a5">path</a>, HTTP_MAX_URL, <span class="stringliteral">"%s/%s"</span>, 
    704 <a name="l00715"></a>00715                         server-&gt;fileBasePath, path); 
    705 <a name="l00716"></a>00716         } 
    706 <a name="l00717"></a>00717         <span class="keywordflow">return</span>(0); 
    707 <a name="l00718"></a>00718 } 
    708 <a name="l00719"></a>00719  
    709 <a name="l00720"></a>00720  
    710 <a name="l00721"></a>00721  
    711 <a name="l00722"></a>00722  
    712 <a name="l00723"></a>00723 <span class="keywordtype">int</span> httpdAddC404Content(server, function) 
    713 <a name="l00724"></a>00724         <a class="code" href="structhttpd.html">httpd</a>   *server; 
    714 <a name="l00725"></a>00725         <span class="keywordtype">void</span>    (*function)(); 
    715 <a name="l00726"></a>00726 { 
    716 <a name="l00727"></a>00727         <span class="keywordflow">if</span> (!server-&gt;handle404) { 
    717 <a name="l00728"></a>00728                 server-&gt;handle404 = (<a class="code" href="struct__httpd__404.html">http404</a>*)malloc(<span class="keyword">sizeof</span>(<a class="code" href="struct__httpd__404.html">http404</a>)); 
    718 <a name="l00729"></a>00729         } 
    719 <a name="l00730"></a>00730  
    720 <a name="l00731"></a>00731         <span class="keywordflow">if</span> (!server-&gt;handle404)
    721 <a name="l00732"></a>00732                 <span class="keywordflow">return</span>(-1); 
    722 <a name="l00733"></a>00733         } 
    723 <a name="l00734"></a>00734  
    724 <a name="l00735"></a>00735         server-&gt;handle404-&gt;function = function; 
    725 <a name="l00736"></a>00736         <span class="keywordflow">return</span>(0); 
    726 <a name="l00737"></a>00737 } 
    727 <a name="l00738"></a>00738  
    728 <a name="l00739"></a>00739 <span class="keywordtype">int</span> httpdAddCContent(server, dir, name, indexFlag, preload, function) 
    729 <a name="l00740"></a>00740         <a class="code" href="structhttpd.html">httpd</a>   *server
    730 <a name="l00741"></a>00741    &nb