<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Problem mit cgi]]></title><description><![CDATA[<p>Habe Probleme mit meinem CGI.<br />
Beim ausführen bekomme ich ein Segmentation fault.<br />
Wenn ich die return Anweisungen entferne bekomme ich dieses nicht.<br />
Beim kompilieren bekomme ich keine Fehlermeldungen oder warnungen.</p>
<p>cgi.cpp</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;fstream&gt;
#include &quot;include/libhtml++.h&quot;

using namespace std;

char *cgi::anfrage(char *formname)
{

char *request = getenv(&quot;REQUEST_METHOD&quot;);

if( NULL == request )
{ 
	return NULL;	
}

else if( strcmp(request, &quot;GET&quot;) == 0 )
{
      query = getenv(&quot;QUERY_STRING&quot;);
}

if( query == &quot;0&quot;)
{
	return NULL;
}

int start;
int end;

start = query.find(formname);
if (query.find(formname) !=string::npos )
{
return NULL;
}

start += 1;

if (query.find(&quot;&amp;&quot;, start) !=string::npos )

{
end = query.rfind(formname, end);
}
else
{
end = query.find(&quot;&amp;&quot;, start);
end -= 1;
}

query.substr(start,end);
query.copy(formname,string::npos);
return (formname);

}
</code></pre>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;sstream&gt;

using namespace std;

class cgi
{
private:
string  query;
public:
char *anfrage(char *formname);
};

class htmlformsubmit
{
private:
void inputsubmit( string submitname);
public:
htmlformsubmit(string submitname)
{
inputsubmit(submitname);
};

};

class htmlformselect
{
private:
void formselectdisplay(string formselectname, string formselectinput, string methodform);
public:
htmlformselect(string formselectname, string formselectinput, string methodform)
{
formselectdisplay (formselectname, formselectinput, methodform);
};

};
</code></pre>
<pre><code class="language-cpp">#include &lt;iostream&gt; 
#include &lt;fstream&gt;
#include &lt;string&gt;
#include &quot;include/css.h&quot;
#include &lt;tuxcms/libhtml++.h&gt;
#include &lt;dirent.h&gt;
#include &lt;sys/types.h&gt;
#include &lt;sys/stat.h&gt;

using namespace std;

void libcss::libcssread()
{
		folder = &quot;style&quot;;
		n = scandir(folder, &amp;namelist, 0 , alphasort);
           if (n &lt; 0)
               perror(&quot;No style folder&quot;);
           else {
		while(n--){
			folders +=( &quot;&lt;option&gt;&quot;);
			folders +=( namelist[n]-&gt;d_name);
			folders +=( &quot;&lt;/option&gt;&quot;);
			delete(namelist[n]);
			}
		htmlformselect::htmlformselect(&quot;cssstyle&quot;, folders , &quot;GET&quot;);
		htmlformsubmit::htmlformsubmit(&quot;Switch Design&quot;);
		}

delete(namelist);
}

void libcss::libcssout()
{
cgi css;
string cssstyle;
cssstyle = css.cgi::anfrage(&quot;cssstyle&quot;);

cout &lt;&lt; &quot;&lt;link rel=\&quot;stylesheet\&quot; type=\&quot;text/css\&quot; href=\&quot;&quot; &lt;&lt; folder &lt;&lt; &quot;/&quot; &lt;&lt; cssstyle &lt;&lt; &quot;/&quot;&lt;&lt; &quot;main.css&quot; &lt;&lt; &quot;\&quot;&gt;&quot; &lt;&lt; endl;
};
</code></pre>
<p>link zu quellcode vom programm:<br />
<a href="ftp://tuxist.de/tuxist/tuxcms.tar.gz" rel="nofollow">ftp://tuxist.de/tuxist/tuxcms.tar.gz</a></p>
<p>gdb output:</p>
<pre><code>(gdb) bt
#0  0x00002b878a678640 in strlen () from /lib/libc.so.6
#1  0x00002b8789f0dd8c in std::string::operator= ()
   from /usr/lib/libstdc++.so.6
#2  0x00002b8789c4518b in libcss::libcssout () from /usr/lib/tuxcms/libcss.so
#3  0x0000000000400e54 in libcss::libcss ()
#4  0x0000000000400d4b in main ()
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/183628/problem-mit-cgi</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 09:33:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/183628.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 06 Jun 2007 20:19:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit cgi on Wed, 06 Jun 2007 20:22:35 GMT]]></title><description><![CDATA[<p>Habe Probleme mit meinem CGI.<br />
Beim ausführen bekomme ich ein Segmentation fault.<br />
Wenn ich die return Anweisungen entferne bekomme ich dieses nicht.<br />
Beim kompilieren bekomme ich keine Fehlermeldungen oder warnungen.</p>
<p>cgi.cpp</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;fstream&gt;
#include &quot;include/libhtml++.h&quot;

using namespace std;

char *cgi::anfrage(char *formname)
{

char *request = getenv(&quot;REQUEST_METHOD&quot;);

if( NULL == request )
{ 
	return NULL;	
}

else if( strcmp(request, &quot;GET&quot;) == 0 )
{
      query = getenv(&quot;QUERY_STRING&quot;);
}

if( query == &quot;0&quot;)
{
	return NULL;
}

int start;
int end;

start = query.find(formname);
if (query.find(formname) !=string::npos )
{
return NULL;
}

start += 1;

if (query.find(&quot;&amp;&quot;, start) !=string::npos )

{
end = query.rfind(formname, end);
}
else
{
end = query.find(&quot;&amp;&quot;, start);
end -= 1;
}

query.substr(start,end);
query.copy(formname,string::npos);
return (formname);

}
</code></pre>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;sstream&gt;

using namespace std;

class cgi
{
private:
string  query;
public:
char *anfrage(char *formname);
};

class htmlformsubmit
{
private:
void inputsubmit( string submitname);
public:
htmlformsubmit(string submitname)
{
inputsubmit(submitname);
};

};

class htmlformselect
{
private:
void formselectdisplay(string formselectname, string formselectinput, string methodform);
public:
htmlformselect(string formselectname, string formselectinput, string methodform)
{
formselectdisplay (formselectname, formselectinput, methodform);
};

};
</code></pre>
<pre><code class="language-cpp">#include &lt;iostream&gt; 
#include &lt;fstream&gt;
#include &lt;string&gt;
#include &quot;include/css.h&quot;
#include &lt;tuxcms/libhtml++.h&gt;
#include &lt;dirent.h&gt;
#include &lt;sys/types.h&gt;
#include &lt;sys/stat.h&gt;

using namespace std;

void libcss::libcssread()
{
		folder = &quot;style&quot;;
		n = scandir(folder, &amp;namelist, 0 , alphasort);
           if (n &lt; 0)
               perror(&quot;No style folder&quot;);
           else {
		while(n--){
			folders +=( &quot;&lt;option&gt;&quot;);
			folders +=( namelist[n]-&gt;d_name);
			folders +=( &quot;&lt;/option&gt;&quot;);
			delete(namelist[n]);
			}
		htmlformselect::htmlformselect(&quot;cssstyle&quot;, folders , &quot;GET&quot;);
		htmlformsubmit::htmlformsubmit(&quot;Switch Design&quot;);
		}

delete(namelist);
}

void libcss::libcssout()
{
cgi css;
string cssstyle;
cssstyle = css.cgi::anfrage(&quot;cssstyle&quot;);

cout &lt;&lt; &quot;&lt;link rel=\&quot;stylesheet\&quot; type=\&quot;text/css\&quot; href=\&quot;&quot; &lt;&lt; folder &lt;&lt; &quot;/&quot; &lt;&lt; cssstyle &lt;&lt; &quot;/&quot;&lt;&lt; &quot;main.css&quot; &lt;&lt; &quot;\&quot;&gt;&quot; &lt;&lt; endl;
};
</code></pre>
<p>link zu quellcode vom programm:<br />
<a href="ftp://tuxist.de/tuxist/tuxcms.tar.gz" rel="nofollow">ftp://tuxist.de/tuxist/tuxcms.tar.gz</a></p>
<p>gdb output:</p>
<pre><code>(gdb) bt
#0  0x00002b878a678640 in strlen () from /lib/libc.so.6
#1  0x00002b8789f0dd8c in std::string::operator= ()
   from /usr/lib/libstdc++.so.6
#2  0x00002b8789c4518b in libcss::libcssout () from /usr/lib/tuxcms/libcss.so
#3  0x0000000000400e54 in libcss::libcss ()
#4  0x0000000000400d4b in main ()
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1300333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1300333</guid><dc:creator><![CDATA[Tuxist]]></dc:creator><pubDate>Wed, 06 Jun 2007 20:22:35 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit cgi on Wed, 06 Jun 2007 20:32:16 GMT]]></title><description><![CDATA[<p>Benutzt du das Makefile?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1300343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1300343</guid><dc:creator><![CDATA[makefile...]]></dc:creator><pubDate>Wed, 06 Jun 2007 20:32:16 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit cgi on Wed, 06 Jun 2007 20:36:17 GMT]]></title><description><![CDATA[<p>mehrere:</p>
<p>makefile libcss:</p>
<pre><code>CXX=g++
CXXFLAGS= -c -Wall -fpic -L/usr/lib/ -I/usr/include
CXXFLAGS1= -shared -o libcss.so
LIBPATH= /usr/lib/tuxcms/libhtml++.so

lib_SRC= \
	css.cpp

lib_OBJS= \
	css.o

all:
	$(CXX) $(CXXFLAGS)   $(lib_SRC)  
	$(CXX) $(CXXFLAGS1)  $(lib_OBJS) $(LIBPATH)

install:
	mkdir -p /usr/lib/tuxcms/
	mkdir -p /usr/include/tuxcms/
	cp libcss.so /usr/lib/tuxcms/libcss.so
	cp include/css.h /usr/include/tuxcms/

remove:
	rm /usr/lib/tuxcms/libcss.so
	rm /usr/include/tuxcms/css.h
</code></pre>
<p>makefile libhtml:</p>
<pre><code>CXX=g++
CXXFLAGS= -Wall -c  -fpic -L/usr/lib/ -I/usr/include -Iinclude
CXXFLAGS1= -shared -o libhtml++.so -Wall

lib_SRC= \
	htmlform.cpp \
	cgi.cpp 
lib_OBJS= \
	htmlform.o \
	cgi.o

all:
	$(CXX) $(CXXFLAGS) $(lib_SRC)
	$(CXX) $(CXXFLAGS1)  $(lib_OBJS)

install:
	mkdir -p /usr/lib/tuxcms/
	mkdir -p /usr/include/tuxcms/
	cp libhtml++.so /usr/lib/tuxcms/libhtml++.so
	cp include/libhtml++.h /usr/include/tuxcms/libhtml++.h

remove:
	rm /usr/lib/tuxcms/libhtml++.so
	rm /usr/include/tuxcms/libhtml++.h
</code></pre>
<p>makefile cgi-bin</p>
<pre><code>CXX= /usr/bin/g++
CXXFLAGS= -c -Wall -fsigned-char -L/usr/lib/ -I/usr/include/tuxcms
CXXFLAGS1= -o index.cgi -Wl
LIBPATH= /usr/lib/tuxcms/libhtml++.so /usr/lib/tuxcms/libcss.so

lib_SRC= \
	index.cpp
lib_OBJS= \
	index.o
all:
	$(CXX) $(CXXFLAGS)  $(lib_SRC) 
	$(CXX) $(CXXFLAGS1) $(lib_OBJS) $(LIBPATH)

debug:
	$(CXX) $(CXXFLAGS)  $(lib_SRC) 
	$(CXX) $(CXXFLAGS1) $(lib_OBJS) $(LIBPATH) -g
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1300347</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1300347</guid><dc:creator><![CDATA[Tuxist]]></dc:creator><pubDate>Wed, 06 Jun 2007 20:36:17 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit cgi on Wed, 06 Jun 2007 20:36:22 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">else if( strcmp(request, &quot;GET&quot;) == 0 ) 
 { 
       query = getenv(&quot;QUERY_STRING&quot;); 
 } 

 if( query == &quot;0&quot;) 
 { 
     return NULL; 
 }
</code></pre>
<p>Das funktioniert so nicht. Wenn QUERY_STRING nicht gesetzt ist, liefert getenv einen 0-Zeiger, den Du dem operator= von std::string übergibst. Da stürzt er ab. Das sieht man auch im gdb-backtrace.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1300348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1300348</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Wed, 06 Jun 2007 20:36:22 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit cgi on Thu, 07 Jun 2007 18:11:40 GMT]]></title><description><![CDATA[<p>habe es gelöst statt return NULL; return &quot;error&quot;;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1300851</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1300851</guid><dc:creator><![CDATA[Tuxist]]></dc:creator><pubDate>Thu, 07 Jun 2007 18:11:40 GMT</pubDate></item></channel></rss>