aboutsummaryrefslogtreecommitdiffstats
path: root/url.c
blob: e4deac7810ea8d9a94f538eea3f294b1ff640cb9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
  /********************************************************************\
  * BitlBee -- An IRC to other IM-networks gateway                     *
  *                                                                    *
  * Copyright 2001-2005 Wilmer van der Gaast and others                *
  \********************************************************************/

/* URL/mirror stuff - Stolen from Axel                                  */

/*
  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the 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 of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License with
  the Debian GNU/Linux distribution in /usr/share/common-licenses/GPL;
  if not, write to the Free Software Foundation, Inc., 59 Temple Place,
  Suite 330, Boston, MA  02111-1307  USA
*/

#include "url.h"

/* Convert an URL to a url_t structure					*/
int url_set( url_t *url, char *set_url )
{
	char s[MAX_STRING];
	char *i;
	
	/* protocol://							*/
	if( ( i = strstr( set_url, "://" ) ) == NULL )
	{
		url->proto = PROTO_DEFAULT;
		strncpy( s, set_url, MAX_STRING );
	}
	else
	{
		if( g_strncasecmp( set_url, "http", i - set_url ) == 0 )
			url->proto = PROTO_HTTP;
		else if( g_strncasecmp( set_url, "https", i - set_url ) == 0 )
			url->proto = PROTO_HTTPS;
		else if( g_strncasecmp( set_url, "socks4", i - set_url ) == 0 )
			url->proto = PROTO_SOCKS4;
		else if( g_strncasecmp( set_url, "socks5", i - set_url ) == 0 )
			url->proto = PROTO_SOCKS5;
		else
		{
			return( 0 );
		}
		strncpy( s, i + 3, MAX_STRING );
	}
	
	/* Split							*/
	if( ( i = strchr( s, '/' ) ) == NULL )
	{
		strcpy( url->file, "/" );
	}
	else
	{
		strncpy( url->file, i, MAX_STRING );
		*i = 0;
	}
	strncpy( url->host, s, MAX_STRING );
	
	/* Check for username in host field				*/
	if( strrchr( url->host, '@' ) != NULL )
	{
		strncpy( url->user, url->host, MAX_STRING );
		i = strrchr( url->user, '@' );
		*i = 0;
		strcpy( url->host, i + 1 );
		*url->pass = 0;
	}
	/* If not: Fill in defaults					*/
	else
	{
		*url->user = *url->pass = 0;
	}
	
	/* Password?							*/
	if( ( i = strchr( url->user, ':' ) ) != NULL )
	{
		*i = 0;
		strcpy( url->pass, i + 1 );
	}
	/* Port number?							*/
	if( ( i = strchr( url->host, ':' ) ) != NULL )
	{
		*i = 0;
		sscanf( i + 1, "%d", &url->port );
	}
	else
	{
		if( url->proto == PROTO_HTTP )
			url->port = 80;
		else if( url->proto == PROTO_HTTPS )
			url->port = 443;
		else if( url->proto == PROTO_SOCKS4 || url->proto == PROTO_SOCKS4 )
			url->port = 1080;
	}
	
	return( url->port > 0 );
}
an> 'bs' => 'bosanski jezik', 'br' => 'brezhoneg', 'bg' => 'български език', 'my' => 'ဗမာစာ', 'ca' => 'Català', 'ch' => 'Chamoru', 'ce' => 'нохчийн мотт', 'ny' => 'chiCheŵa', 'zh' => '中文 (Zhōngwén)', 'cv' => 'чӑваш чӗлхи', 'kw' => 'Kernewek', 'co' => 'corsu', 'cr' => 'ᓀᐦᐃᔭᐍᐏᐣ', 'hr' => 'hrvatski', 'cs' => 'česky', 'da' => 'dansk', 'dv' => 'ދިވެހި', 'nl' => 'Nederlands', 'dz' => 'རྫོང་ཁ', 'en' => 'English', 'eo' => 'Esperanto', 'et' => 'eesti', 'ee' => 'Eʋegbe', 'fo' => 'føroyskt', 'fj' => 'vosa Vakaviti', 'fi' => 'suomi', 'fr' => 'français', 'ff' => 'Fulfulde', 'gl' => 'Galego', 'ka' => 'ქართული', 'de' => 'Deutsch', 'el' => 'Ελληνικά', 'gn' => 'Avañe\'ẽ', 'gu' => 'ગુજરાતી', 'ht' => 'Kreyòl ayisyen', 'ha' => 'Hausa', 'he' => 'עברית', 'hz' => 'Otjiherero', 'hi' => 'हिन्दी', 'ho' => 'Hiri Motu', 'hu' => 'Magyar', 'ia' => 'Interlingua', 'id' => 'Bahasa Indonesia', 'ie' => 'Originally called Occidental; then Interlingue after WWII', 'ga' => 'Gaeilge', 'ig' => 'Asụsụ Igbo', 'ik' => 'Iñupiaq', 'io' => 'Ido', 'is' => 'Íslenska', 'it' => 'Italiano', 'iu' => 'ᐃᓄᒃᑎᑐᑦ', 'ja' => '日本語 (にほんご)', 'jv' => 'basa Jawa', 'kl' => 'kalaallisut', 'kn' => 'ಕನ್ನಡ', 'kr' => 'Kanuri', 'ks' => 'कश्मीरी', 'kk' => 'Қазақ тілі', 'km' => 'ភាសាខ្មែរ', 'ki' => 'Gĩkũyũ', 'rw' => 'Ikinyarwanda', 'ky' => 'кыргыз тили', 'kv' => 'коми кыв', 'kg' => 'KiKongo', 'ko' => '한국어 (韓國語)', 'ku' => 'Kurdî', 'kj' => 'Kuanyama', 'la' => 'latine', 'lb' => 'Lëtzebuergesch', 'lg' => 'Luganda', 'li' => 'Limburgs', 'ln' => 'Lingála', 'lo' => 'ພາສາລາວ', 'lt' => 'lietuvių kalba', 'lu' => '', 'lv' => 'latviešu valoda', 'gv' => 'Gaelg', 'mk' => 'македонски јазик', 'mg' => 'Malagasy fiteny', 'ms' => 'bahasa Melayu', 'ml' => 'മലയാളം', 'mt' => 'Malti', 'mi' => 'te reo Māori', 'mr' => 'मराठी', 'mh' => 'Kajin M̧ajeļ', 'mn' => 'монгол', 'na' => 'Ekakairũ Naoero', 'nv' => 'Diné bizaad', 'nb' => 'Norsk bokmål', 'nd' => 'isiNdebele', 'ne' => 'नेपाली', 'ng' => 'Owambo', 'nn' => 'Norsk nynorsk', 'no' => 'Norsk', 'ii' => 'ꆈꌠ꒿ Nuosuhxop', 'nr' => 'isiNdebele', 'oc' => 'Occitan', 'oj' => 'ᐊᓂᔑᓈᐯᒧᐎᓐ', 'cu' => 'ѩзыкъ словѣньскъ', 'om' => 'Afaan Oromoo', 'or' => 'ଓଡ଼ିଆ', 'os' => 'ирон æвзаг', 'pa' => 'ਪੰਜਾਬੀ', 'pi' => 'पाऴि', 'fa' => 'فارسی', 'pl' => 'polski', 'ps' => 'پښتو', 'pt' => 'Português', 'qu' => 'Runa Simi', 'rm' => 'rumantsch grischun', 'rn' => 'Ikirundi', 'ro' => 'română', 'ru' => 'русский язык', 'sa' => 'संस्कृतम्', 'sc' => 'sardu', 'sd' => 'सिन्धी', 'se' => 'Davvisámegiella', 'sm' => 'gagana fa\'a', 'sg' => 'yângâ tî sängö', 'sr' => 'српски језик', 'gd' => 'Gàidhlig', 'sn' => 'chiShona', 'si' => 'සිංහල', 'sk' => 'slovenčina', 'sl' => 'slovenščina', 'so' => 'Soomaaliga', 'st' => 'Sesotho', 'es' => 'español', 'su' => 'Basa Sunda', 'sw' => 'Kiswahili', 'ss' => 'SiSwati', 'sv' => 'svenska', 'ta' => 'தமிழ்', 'te' => 'తెలుగు', 'tg' => 'тоҷикӣ', 'th' => 'ไทย', 'ti' => 'ትግርኛ', 'bo' => 'བོད་ཡིག', 'tk' => 'Türkmen', 'tl' => 'Wikang Tagalog', 'tn' => 'Setswana', 'to' => 'faka Tonga', 'tr' => 'Türkçe', 'ts' => 'Xitsonga', 'tt' => 'татарча', 'tw' => 'Twi', 'ty' => 'Reo Tahiti', 'ug' => 'Uyƣurqə', 'uk' => 'українська', 'ur' => 'اردو', 'uz' => 'O\'zbek', 've' => 'Tshivenḓa', 'vi' => 'Tiếng Việt', 'vo' => 'Volapük', 'wa' => 'Walon', 'cy' => 'Cymraeg', 'wo' => 'Wollof', 'fy' => 'Frysk', 'xh' => 'isiXhosa', 'yi' => 'ייִדיש', 'yo' => 'Yorùbá', 'za' => 'Saɯ cueŋƅ', 'zu' => 'isiZulu' } return language_names[locale] end end