Форум программистов, компьютерный форум CyberForum.ru

Парсер урлов для ГЕТ и переменных для ПОСТ на Ц - C++

Восстановить пароль Регистрация
 
MySQL
Сообщений: n/a
15.03.2011, 03:33     Парсер урлов для ГЕТ и переменных для ПОСТ на Ц #1
Пишу на Ц парсер для переменных окружения и стандартного ввода - аналог функций GET и POST на PHP.
Ощущение, что обработка строк на Ц почти аналогична ходьбе на руках - в принципе возможно, но крайне неудобно.
Или приём пищи хоккейными клюшками. Причём на вытянутых руках.
Предстваляю какая чехарда начинается при вызове библиотечной функции - поиск и подгрузка с диска нужного *.so, поиск точки входа и тп.
На Асме такого бардака стараться больно долго. Оптимизирующим компиляторам и не снилось какой красивый код руками можно написать.
В общем пишу прогу разбирающую урлу на переменные со значениями. Наверняка кто-то где-то такое уже делал, но я не нашел.
Если кто знает где искать - подскажите. Меньше мучаться буду.
А тут ещё совсем неестетсвенная проблема - написать конвертер - из байта делать байт.
Причём не какие-то там кодировки или шифрование. Всё тривиально. Нужно байт интерпретируемый (ой блин, компилируемый)
как целое бесзнаковое число считать символом - просто MOV. В терминах Ц (если он вдруг числа хранит как строки) функция ITOA.
Но такой во всяких инклюдах с либами на FreeBSD 5.1 на нашёл. Обратная функция есть, и вообще, и в коде.
И писать её приходится только потому, что когда ненадо Ц мешает обрабатывать данные, типо заботится о целостности.
А когда надо бы проверять хотябы границы массива, плюёт с высокой колокольни.
А ведь наверняка рядом с переменной есть структура, в которой хранится и тип и размер. Надо только поменять тип.
Да... на лирику потянуло. Спать надо больше. Итак заготовка:

// gcc -L/usr/local/lib/mysql -lmysqlclient -lz -lcrypt -lm -L/usr/lib -lssl -lcrypto -o get_vars get_vars.c

#include </usr/include/stdarg.h>
#include </usr/include/stdio.h>
#include </usr/include/stdlib.h>
#include </usr/include/string.h>

char Query[100], *String, *Mail_user, *Mail_old_password, *Mail_new_password, *Mail_new_password1, *ErrorMessage;
int Pay, Result; //mysql_real_query();
unsigned long i;
unsigned long String_Length;
char *Variable, *Value, *Write_Symbol, Symbol[1]; //Read_Symbol
unsigned int Character, Read_Symbol;

//unsigned int ITOA (unsigned int iNteger) {unsigned int cHaracter; unsigned int hUndreds, tEns, oNes;
char ITOA (unsigned int iNteger) { char cHaracter; unsigned int hUndreds, tEns, oNes;
hUndreds%=iNteger/100; iNteger=iNteger-hUndreds*100;
tEns%=iNteger/10; oNes=iNteger-tEns*10;
// cHaracter=hUndreds*100+tEns*10+oNes;
cHaracter=(hUndreds-'0')*100+(tEns-'0')*10+(oNes-'0');
return(cHaracter); }

int main (int argc, char **argv) { setvbuf (stdout, NULL, _IONBF, 0);
String = getenv ('CONTENT_LENGTH'); String = getenv ('SHLVL'); i=atoi(String);
//printf('String=%s
',String); printf('i=%d
',i);

//Read_Symbol=205; Character=ITOA(Read_Symbol); printf('rs=%d
',Character);
//Read_Symbol=205; Write_Symbol=ITOA(Read_Symbol); printf('rs=%d
',Write_Symbol);
Read_Symbol=205; Symbol[0]=ITOA(Read_Symbol); printf('rs=%d
',Symbol[0]);

String = getenv ('CLIENT_IP'); String = getenv ('QUERY_STRING'); String = getenv ('PATH');
String_Length=strlen(String);
for (i=0; i<String_Length; i++) { Variable=''; Value=''; Read_Symbol=String[i]; //putchar(Read_Symbol);
//Write_Symbol=Read_Symbol;
/*
if (Read_Symbol>32 && Read_Symbol<50) {printf('F*ck
');}
Character=atoi(&Read_Symbol);
Symbol[0]=Read_Symbol;
Write_Symbol='64';
Character=atoi(Write_Symbol);
Character=atoi('Z'); //Symbol[0]); //Write_Symbol=Character; //Write_Symbol='1';

if (Read_Symbol=='+') {Write_Symbol=' &qu
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2011, 03:33     Парсер урлов для ГЕТ и переменных для ПОСТ на Ц
Посмотрите здесь:

C++ Как можно бы создать метод для ввода размерности (т.е. для ввода private переменных n,m)?
Подмена переменных для ссылок C++
Парсер для статистики C++
Какие операции доступны для целочисленных переменных и недоступны для вещественных? C++
Диапазон значений для переменных C++
C++ Парсер для avito
C++ Парсер для математических выражений

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 00:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru