mime.c
来自「网络爬虫程序」· C语言 代码 · 共 136 行
C
136 行
/***************************************************************************//* This code is part of WWW grabber called pavuk *//* Copyright (c) 1997 - 2001 Stefan Ondrejicka *//* Distributed under GPL 2 or later *//***************************************************************************/#include "config.h"#include <stdlib.h>#include <string.h>#include "doc.h"#include "mime.h"#include "mimetype.h"#include "tools.h"#ifdef HAVE_FNMATCH#include <fnmatch.h>#else#include "fnmatch.h"#endif/*********************************************//* oddelenie MIME hlavicky od tela dokumentu *//* FIXME: Translate me! *//*********************************************/void split_mime_doc(doc * docp){ char *p1, *p2; char *doc_c; int mime_size; p1 = strstr(docp->contents, "\n\n"); p2 = strstr(docp->contents, "\r\n\r\n"); if(p2 && ((p2 < p1) || !p1)) { doc_c = p2 + 4; mime_size = p2 - docp->contents; } else if(p1) { doc_c = p1 + 2; mime_size = p1 - docp->contents; } else { doc_c = docp->contents; mime_size = 0; } p1 = docp->contents; docp->size = docp->size - (doc_c - docp->contents); docp->contents = (char *) _malloc(docp->size); memcpy(docp->contents, doc_c, docp->size); docp->mime = NULL; if(mime_size) { docp->mime = (char *) _malloc(mime_size + 3); strncpy(docp->mime, p1, mime_size + 2); *(docp->mime + mime_size + 2) = '\0'; } free(p1);}/************************************************//* vrati n-tu hodnotu atributu z MIME hlavicky *//* FIXME: Translate me! *//************************************************/char *get_mime_n_param_val_str(char *param_id, char *mimet, int n){ char *p; int i = 0; int ilen; if(!mimet) return NULL; p = mimet; while(*p) { ilen = strcspn(p, "\r\n"); if(!strncasecmp(p, param_id, strlen(param_id))) { if(i == n) { char *p1; p1 = p + strlen(param_id); while(tl_ascii_isspace(*p1)) p1++; p += ilen; while(*p) { p += strspn(p, "\n\r"); ilen = strcspn(p, "\r\n"); if((*p == ' ' || *p == '\t')) { p += ilen; } else break; } p1 = tl_strndup(p1, p - p1); omit_chars(p1, "\r\n"); return p1; } i++; } p += ilen; p += strspn(p, "\n\r"); } return NULL;}const char *mime_get_type_ext(const char *type){ const struct mime_type_ext *p; if(!type) return NULL; for(p = mime_type_exts; p->mimet; ++p) { if(!fnmatch(p->mimet, type, 0)) { return p->ext; } } return NULL;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?