treebird/src/query.c
me@ow.nekobit.net 31efb281a4 Query parser
FossilOrigin-Name: fb3dec10d90e0beac45bcef20f4f0b7ba9fcc1a446d602e4484a0d0fa5a9e856
2022-02-01 03:10:09 +00:00

43 lines
1.3 KiB
C

/*
* RatFE - Lightweight frontend for Pleroma
* Copyright (C) 2022 Nekobit
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include "query.h"
char* parse_query(char* begin, struct http_query_info* info)
{
int end = 0;
char* val_begin;
info->key = begin;
for (; *begin != '&' && *begin != '\0'; ++begin)
{
if (*begin == '=')
{
val_begin = begin+1;
*begin = '\0';
}
}
if (*begin == '\0') end = 1;
if (*begin == '&') *begin = '\0';
info->val = val_begin;
// The val length may be large, so strlen can waste time
info->val_len = (size_t)(begin - val_begin);
return end ? NULL : begin+1;
}