Lines Matching defs:ssi
45 * <!--#tag--> in any file whose extension is .shtml, .shtm or .ssi with
156 {"/index.ssi", 1 },
264 struct http_ssi_state *ssi;
388 if (hs->next->ssi != NULL) {
435 http_ssi_state_free(struct http_ssi_state *ssi)
437 if (ssi != NULL) {
438 HTTP_FREE_SSI_STATE(ssi);
497 if (hs->ssi) {
498 http_ssi_state_free(hs->ssi);
499 hs->ssi = NULL;
750 * The tag's name is stored in ssi->tag_name (NULL-terminated), the replacement
752 * The amount of data written is stored to ssi->tag_insert_len.
767 struct http_ssi_state *ssi;
773 ssi = hs->ssi;
774 LWIP_ASSERT("ssi != NULL", ssi != NULL);
776 current_tag_part = ssi->tag_part;
777 ssi->tag_part = HTTPD_LAST_TAG_PART;
780 tag = ssi->tag_name;
794 if (strcmp(ssi->tag_name, httpd_tags[tag]) == 0)
797 ssi->tag_insert_len = httpd_ssi_handler(tag, ssi->tag_insert,
800 , current_tag_part, &ssi->tag_part
807 if (ssi->tag_insert_len != HTTPD_SSI_TAG_UNKNOWN)
823 len = LWIP_MIN(sizeof(ssi->tag_name), LWIP_MIN(strlen(ssi->tag_name),
825 MEMCPY(ssi->tag_insert, UNKNOWN_TAG1_TEXT, UNKNOWN_TAG1_LEN);
826 MEMCPY(&ssi->tag_insert[UNKNOWN_TAG1_LEN], ssi->tag_name, len);
827 MEMCPY(&ssi->tag_insert[UNKNOWN_TAG1_LEN + len], UNKNOWN_TAG2_TEXT, UNKNOWN_TAG2_LEN);
828 ssi->tag_insert[UNKNOWN_TAG1_LEN + len + UNKNOWN_TAG2_LEN] = 0;
830 len = strlen(ssi->tag_insert);
832 ssi->tag_insert_len = (u16_t)len;
956 if (hs->ssi == NULL) /* @todo: get maximum file length from SSI */
1175 if (hs->ssi) {
1176 hs->ssi->parse_left = count;
1177 hs->ssi->parsed = hs->buf;
1186 /** Sub-function of http_send(): This is the normal send-routine for non-ssi files
1213 /** Sub-function of http_send(): This is the send-routine for ssi files
1226 struct http_ssi_state *ssi = hs->ssi;
1227 LWIP_ASSERT("ssi != NULL", ssi != NULL);
1237 if (ssi->parsed > hs->file) {
1238 len = (u16_t)LWIP_MIN(ssi->parsed - hs->file, 0xffff);
1253 LWIP_DEBUGF(HTTPD_DEBUG, ("State %d, %d left\n", ssi->tag_state, (int)ssi->parse_left));
1257 while (((ssi->tag_state == TAG_SENDING) || ssi->parse_left) && (err == ERR_OK)) {
1261 switch (ssi->tag_state) {
1266 if (*ssi->parsed == http_ssi_tag_desc[tag_type].lead_in[0]) {
1269 ssi->tag_type = tag_type;
1270 ssi->tag_state = TAG_LEADIN;
1271 ssi->tag_index = 1;
1273 ssi->tag_started = ssi->parsed;
1280 ssi->parse_left--;
1281 ssi->parsed++;
1289 if (http_ssi_tag_desc[ssi->tag_type].lead_in[ssi->tag_index] == 0) {
1290 ssi->tag_index = 0;
1291 ssi->tag_state = TAG_FOUND;
1294 if (*ssi->parsed == http_ssi_tag_desc[ssi->tag_type].lead_in[ssi->tag_index]) {
1297 ssi->tag_index++;
1301 ssi->tag_state = TAG_NONE;
1305 if ((ssi->tag_state == TAG_NONE) &&
1306 (ssi->parsed - hs->file < ssi->tag_index)) {
1307 for(u16_t i = 0;i < ssi->tag_index;i++) {
1308 ssi->tag_insert[i] = http_ssi_tag_desc[ssi->tag_type].lead_in[i];
1310 ssi->tag_insert_len = ssi->tag_index;
1311 hs->file += ssi->parsed - hs->file;
1312 hs->left -= ssi->parsed - hs->file;
1313 ssi->tag_end = hs->file;
1314 ssi->tag_index = 0;
1315 ssi->tag_state = TAG_SENDING;
1321 ssi->parse_left--;
1322 ssi->parsed++;
1332 if ((ssi->tag_index == 0) && ((*ssi->parsed == ' ') ||
1333 (*ssi->parsed == '\t') || (*ssi->parsed == '\n') ||
1334 (*ssi->parsed == '\r'))) {
1336 ssi->parse_left--;
1337 ssi->parsed++;
1343 if ((*ssi->parsed == http_ssi_tag_desc[ssi->tag_type].lead_out[0]) ||
1344 (*ssi->parsed == ' ') || (*ssi->parsed == '\t') ||
1345 (*ssi->parsed == '\n') || (*ssi->parsed == '\r')) {
1347 if (ssi->tag_index == 0) {
1349 ssi->tag_state = TAG_NONE;
1353 ssi->tag_state = TAG_LEADOUT;
1354 LWIP_ASSERT("ssi->tag_index <= 0xff", ssi->tag_index <= 0xff);
1355 ssi->tag_name_len = (u8_t)ssi->tag_index;
1356 ssi->tag_name[ssi->tag_index] = '\0';
1357 if (*ssi->parsed == http_ssi_tag_desc[ssi->tag_type].lead_out[0]) {
1358 ssi->tag_index = 1;
1360 ssi->tag_index = 0;
1365 if (ssi->tag_index < LWIP_HTTPD_MAX_TAG_NAME_LEN) {
1366 ssi->tag_name[ssi->tag_index++] = *ssi->parsed;
1369 ssi->tag_state = TAG_NONE;
1374 ssi->parse_left--;
1375 ssi->parsed++;
1383 if ((ssi->tag_index == 0) && ((*ssi->parsed == ' ') ||
1384 (*ssi->parsed == '\t') || (*ssi->parsed == '\n') ||
1385 (*ssi->parsed == '\r'))) {
1387 ssi->parse_left--;
1388 ssi->parsed++;
1393 if (*ssi->parsed == http_ssi_tag_desc[ssi->tag_type].lead_out[ssi->tag_index]) {
1399 ssi->parse_left--;
1400 ssi->parsed++;
1401 ssi->tag_index++;
1403 if (http_ssi_tag_desc[ssi->tag_type].lead_out[ssi->tag_index] == 0) {
1407 ssi->tag_part = 0; /* start with tag part 0 */
1414 ssi->tag_index = 0;
1415 ssi->tag_state = TAG_SENDING;
1416 ssi->tag_end = ssi->parsed;
1418 ssi->parsed = ssi->tag_started;
1423 if (ssi->tag_end > hs->file) {
1426 len = (u16_t)LWIP_MIN(ssi->tag_end - hs->file, 0xffff);
1429 len = (u16_t)LWIP_MIN(ssi->tag_started - hs->file, 0xffff);
1436 if (ssi->tag_started <= hs->file) {
1438 len += (u16_t)(ssi->tag_end - ssi->tag_started);
1449 ssi->parse_left--;
1450 ssi->parsed++;
1451 ssi->tag_state = TAG_NONE;
1463 if (ssi->tag_end > hs->file) {
1466 len = (u16_t)LWIP_MIN(ssi->tag_end - hs->file, 0xffff);
1468 LWIP_ASSERT("hs->started >= hs->file", ssi->tag_started >= hs->file);
1470 len = (u16_t)LWIP_MIN(ssi->tag_started - hs->file, 0xffff);
1480 if (ssi->tag_started <= hs->file) {
1482 len += (u16_t)(ssi->tag_end - ssi->tag_started);
1490 if (ssi->tag_index >= ssi->tag_insert_len) {
1492 if (ssi->tag_part != HTTPD_LAST_TAG_PART) {
1494 ssi->tag_index = 0;
1501 if (ssi->tag_index < ssi->tag_insert_len) {
1504 len = (ssi->tag_insert_len - ssi->tag_index);
1510 err = http_write(pcb, &(ssi->tag_insert[ssi->tag_index]), &len,
1514 ssi->tag_index += len;
1519 if (ssi->tag_part == HTTPD_LAST_TAG_PART)
1525 ssi->tag_index = 0;
1526 ssi->tag_state = TAG_NONE;
1528 ssi->parsed = ssi->tag_end;
1542 if ((ssi->tag_state != TAG_SENDING) && (ssi->parsed > hs->file)) {
1544 if ((ssi->tag_state != TAG_NONE) && (ssi->tag_started > ssi->tag_end)) {
1547 len = (u16_t)(ssi->tag_started - hs->file);
1548 hs->left -= (ssi->parsed - ssi->tag_started);
1549 ssi->parsed = ssi->tag_started;
1550 ssi->tag_started = hs->buf;
1554 len = (u16_t)LWIP_MIN(ssi->parsed - hs->file, 0xffff);
1622 if (hs->ssi) {
2336 struct http_ssi_state *ssi = http_ssi_state_alloc();
2337 if (ssi != NULL) {
2338 ssi->tag_index = 0;
2339 ssi->tag_state = TAG_NONE;
2340 ssi->parsed = file->data;
2341 ssi->parse_left = file->len;
2342 ssi->tag_end = file->data;
2343 hs->ssi = ssi;
2420 if (hs->ssi != NULL) {