⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 util.c

📁 linux下网络下载软件的源码
💻 C
字号:
/*      Get and Resume Elite EDition source codeGet and Resume Elite EDition (GREED)Copyright (C) 1999  Anoakie TurnerThis program is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 2 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 ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program; if not, write to the Free SoftwareFoundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.For more information on the GPL, please go to:http://www.gnu.org/copyleft/gpl.html        Contact:  Anoakie Turner                  Anoakie.Turner@asu.edu                  13240 N. 94th Pl.                  Scottsdale, AZ 85260*/#include "main.h"char *ReadString(char *str1, int *ind, char stopchar, int stopint)/***************************************	void ReadString(char *str1, int &ind, char stopchar,**			int stopint, char* str2);**** Pre:  Assigned (str1) && Assigned (ind) && Assigned (stopchar)**	 && Assigned (stopint)** Post: a string starting at ind and ending at (stopchar ||**	 stopint) is copied int str2*************************************/{	int stringIndex = *ind;	char *str2;	while (str1[stringIndex] != stopchar && stringIndex < stopint)		stringIndex ++;	str2 = malloc(stringIndex + 1);	stringIndex = 0;	while (*ind < stopint && str1[*ind] != stopchar)	{	str2 [stringIndex++] = str1[*ind];		(*ind)++;	}	str2 [stringIndex] = '\0';	return(str2);}char *ReadString2(char *str1, char stopchar)/***************************************      void ReadString(char *str1, int &ind, char stopchar,**                      int stopint, char* str2);**** Pre:  Assigned (str1) && Assigned (ind) && Assigned (stopchar)**       && Assigned (stopint)** Post: a string starting at ind and ending at (stopchar ||**       stopint) is copied int str2*************************************/{       int stringIndex = 0;	int ind = 0;        char *str2;        if (str1 == NULL)                return(NULL);        while (str1[stringIndex] != stopchar)                stringIndex ++;        str2 = malloc(stringIndex + 1);        stringIndex = 0;        while (str1[ind] != stopchar)        {       str2 [stringIndex++] = str1[ind];                (ind)++;        }        str2 [stringIndex] = '\0';        return (str2);}/*char *ReadString2(char *str, char stopchar){	char *retval = malloc(strlen(str) - strlen(strchr(str, stopchar)) + 1);	strncpy(retval, str, strlen(str) - strlen(strchr(str, stopchar)));	retval[strlen(str) - strlen(strchr(str, stopchar))] = '\0';	return (retval);}*/void unescape_url (char *url)/***************************************	unescape_url (char *url)**** NOTES: This routine was taken from an example that comes with the NSCA server**	  This routine is to decode the %HH characters recieved from the server*************************************/{        register int x, y;        for (x = 0, y = 0; url [y]; ++x, ++y)        {                if ((url [x] = url [y]) == '%')                {                        url [x] = x2c (&url [y+1]);                        y += 2;                }                else if (url [x] == '+')                        url [x] = ' ';   }        url [x] = '\0';}char x2c (char *what)/****************************************************************************/{	register char digit;        digit = (what [0] >= 'A' ? ((what [0] & 0xdf) - 'A') + 10 : (what [0] - '0'));        digit *= 16;        digit += (what [1] >= 'A' ? ((what [1] & 0xdf) - 'A') + 10 : (what [1] - '0'));        return (digit);}char *Base64Encode(char *str1)/***************************************	char Base64Encode (char *)**** PRE:  exists(str1)** POST: returns a Base 64 encoded version of (str1)*************************************/{	int len = strlen(str1);	int i = 0;	int j = 0;	char *str2 = malloc((len/3)*4 + 3);	while (j < len - 2)	{	str2[i++] = BASE64[str1[j]>>2];		str2[i++] = BASE64[((str1[j]&3)<<4)|(str1[j + 1]>>4)];		str2[i++] = BASE64[((str1[j + 1]&15)<<2)|(str1[j + 2]>>6)];		str2[i++] = BASE64[str1[j+2]&63];		j+=3;	}	switch(len - j)	{	case 1:			str2[i++] = BASE64[str1[j]>>2];			str2[i++] = BASE64[((str1[j]&3)<<4)];			str2[i++] = '=';			str2[i++] = '=';			break;		case 2:			str2[i++] = BASE64[str1[j]>>2];			str2[i++] = BASE64[((str1[j]&3)<<4)|(str1[j + 1]>>4)];			str2[i++] = BASE64[((str1[j + 1]&15)<<2)];			str2[i++] = '=';			break;		default:			break;	}	str2[i] = '\0';	return(str2);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -