Habe mal kräftig aufgeräumt leider läuft programm immer noch nicht richtig:
cgi.cpp
Code:
#include <iostream>
#include <string>
#include <fstream>
#include "include/libhtml++.h"
using namespace std;
char *cgi::anfrage(char *formname)
{
char *request = getenv("REQUEST_METHOD");
if( NULL == request )
{
return NULL;
}
else if( strcmp(request, "GET") == 0 )
{
query = getenv("QUERY_STRING");
}
if( query == "0")
{
return NULL;
}
int start;
int end;
start = query.find(formname);
if (query.find(formname) !=string::npos )
{
return NULL;
}
start += 1;
if (query.find("&", start) !=string::npos )
{
end = query.rfind(formname, end);
}
else
{
end = query.find("&", start);
end -= 1;
}
query.substr(start,end);
query.copy(formname,string::npos);
return (formname);
}
libhtml++.h
Code:
#include <iostream>
#include <string>
#include <sstream>
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);
};
};
css.cpp
Code:
#include <string>
#include "include/css.h"
#include <tuxcms/libhtml++.h>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
using namespace std;
void libcss::libcssread()
{
folder = "style";
n = scandir(folder, &namelist, 0 , alphasort);
if (n < 0)
perror("No style folder");
else {
while(n--){
folders +=( "<option>");
folders +=( namelist[n]->d_name);
folders +=( "</option>");
delete(namelist[n]);
}
htmlformselect::htmlformselect("cssstyle", folders , "GET");
htmlformsubmit::htmlformsubmit("Switch Design");
}
delete(namelist);
}
void libcss::libcssout()
{
cgi css;
string cssstyle;
cssstyle = css.cgi::anfrage("cssstyle");
cout << "<link rel=\"stylesheet\" type=\"text/css\" href=\"" << folder << "/" << cssstyle << "/"<< "main.css" << "\">" << endl;
};
programmausgabe:
Code:
Starting program: /home/jan/tuxist.de/tuxcms/cgi-bin/index.cgi
Content-Type:text/html
<html>
<head>
<title>tuxist.de</title>
</head>
<body>
<form action="index.cgi" method=GET> <select name=" cssstyle" ><option>default</option><option>black</option><option>..</option><option>.</option>> </form>
</select><Input Type="submit" value="Switch Design">
Program received signal SIGSEGV, Segmentation fault.
0x00002acf1574c640 in strlen () from /lib/libc.so.6
backtrace:
Code:
(gdb) bt
#0 0x00002acf1574c640 in strlen () from /lib/libc.so.6
#1 0x00002acf14fe1d8c in std::string::operator= ()
from /usr/lib/libstdc++.so.6
#2 0x00002acf14d1918b in libcss::libcssout () from /usr/lib/tuxcms/libcss.so
#3 0x0000000000400e54 in libcss::libcss ()
#4 0x0000000000400d4b in main ()
Makefile
Code:
CXX=g++
CXXFLAGS= -c -fpic -L/usr/lib/ -I/usr/include -Iinclude -Wall -posix
CXXFLAGS1= -shared -o libhtml++.so
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
Lesezeichen