Compare commits

...

10 Commits

Author SHA1 Message Date
3f279971c5 Bump version to 2.12.3 2016-10-22 08:45:18 -04:00
e7101ebcae Default net_ping_timeout to 60 2016-10-22 06:51:11 -04:00
f64d1c847a mpcinfo: Do not modify string literals 2016-10-14 13:18:49 -04:00
116a394ef6 perl: Remove dead assignment 2016-10-11 11:48:36 -04:00
ebc40fe9c7 Added MHOP command 2016-10-11 09:58:56 -04:00
c0aa47c7a1 fishlim: Fix MEMZERO macro using element number not bytes
Closes #1837
2016-10-11 09:58:06 -04:00
f38261f666 mpcinfo: Fix memory leaks
Closes #1838
2016-10-11 09:55:29 -04:00
2a81b98e7b Don't abort if translated text event fails
At least try the untranslated one...

Also while at it don't present a ton of dialogs to the user
about this failure, they wouldn't even know what to do with
that information.
2016-10-10 14:11:08 -04:00
bb8f0beabe Update translations
This is mostly to fix a bogus translation in es.po
2016-10-10 13:55:27 -04:00
adea019820 Bump version to 2.12.2 2016-10-09 00:14:43 +02:00
13 changed files with 93 additions and 47 deletions

View File

@ -1,6 +1,6 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT([HexChat],[2.12.2])
AC_INIT([HexChat],[2.12.3])
AC_PREREQ([2.64])
AC_COPYRIGHT([Copyright (C) 1998-2010 Peter Zelezny])

View File

@ -39,7 +39,7 @@
#define DH1080_PRIME_BYTES 135
#define SHA256_DIGEST_LENGTH 32
#define B64ABC "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
#define MEMZERO(x) memset(x, 0x00, (sizeof(x)/sizeof(*x)) )
#define MEMZERO(x) memset(x, 0x00, sizeof(x))
/* All clients must use the same prime number to be able to keyx */
static const guchar prime1080[DH1080_PRIME_BYTES] =

View File

@ -122,7 +122,6 @@ struct tagInfo readID3V1(char *file){
char *tag;
char *id;
char *tmp;
tag = (char*) malloc(sizeof(char)*129);
ret.artist=NULL;
f=fopen(file,"rb");
if (f==NULL){
@ -133,18 +132,21 @@ struct tagInfo readID3V1(char *file){
//int offset=getSize(file)-128;
res=fseek(f,-128,SEEK_END);
if (res!=0) {printf("seek failed\n");fclose(f);return ret;}
tag = (char*) malloc(sizeof(char)*129);
//long int pos=ftell(f);
//printf("position= %li\n",pos);
for (i=0;i<128;i++) {
c=fgetc(f);
if (c==EOF) {hexchat_printf(ph,"read ID3V1 failed\n");fclose(f);return ret;}
if (c==EOF) {hexchat_printf(ph,"read ID3V1 failed\n");fclose(f);free(tag);return ret;}
tag[i]=(char)c;
}
fclose(f);
//printf("tag readed: \n");
id=substring(tag,0,3);
//printf("header: %s\n",id);
if (strcmp(id,"TAG")!=0){hexchat_printf(ph,"no id3 v1 found\n");return ret;}
res=strcmp(id,"TAG");
free(id);
if (res!=0){hexchat_printf(ph,"no id3 v1 found\n");free(tag);return ret;}
ret.title=subString(tag,3,30,1);
ret.artist=subString(tag,33,30,1);
ret.album=subString(tag,63,30,1);
@ -164,6 +166,8 @@ struct tagInfo readID3V1(char *file){
//hexchat_printf(ph, "tmp: \"%s\" -> %i",tmp,tmp[0]);
//hexchat_printf(ph,"genre \"%s\"",ret.genre);
//if (DEBUG==1) putlog("id3v1 extracted");
free(tmp);
free(tag);
return ret;
}

View File

@ -48,7 +48,7 @@ struct tagInfo getOggHeader(char *file){
char *sub;
char *name;
char *val;
char *HEADLOC1, *HEADLOC3, *HEADLOC5;
char HEADLOC1[]="_vorbis", HEADLOC3[]="_vorbis", HEADLOC5[]="_vorbis";
FILE *f;
struct tagInfo info;
@ -62,11 +62,8 @@ struct tagInfo getOggHeader(char *file){
for (i=0;i<4095;i++) {c=fgetc(f);header[i]=(char)c;}
fclose(f);
HEADLOC1="_vorbis";
HEADLOC1[0]=1;
HEADLOC3="_vorbis";
HEADLOC3[0]=3;
HEADLOC5="_vorbis";
HEADLOC5[0]=5;
h1pos=inStr(header,4096,HEADLOC1);
h3pos=inStr(header,4096,HEADLOC3);
@ -104,6 +101,7 @@ struct tagInfo getOggHeader(char *file){
if (strcmp(name,"GENRE")==0) info.genre=val;
if (strcmp(name,"COMMENT")==0) info.comment=val;
pos+=4+tagLen;
free(name);
}
if (info.artist==NULL) info.artist="";
if (info.album==NULL) info.album ="";

View File

@ -91,13 +91,15 @@ struct theme themeAdd(struct theme data, char *info){
}
void loadThemes(){
char *hDir, *hFile, *line, *val;
char *hDir, *hFile, *line, *lineCap, *val;
FILE *f;
hexchat_print(ph,"loading themes\n");
hDir=(char*)calloc(1024,sizeof(char));
strcpy(hDir,hexchat_get_info(ph,"configdir"));
hFile=str3cat(hDir,"\\","mpcInfo.theme.txt");
f = fopen(hFile,"r");
free(hDir);
free(hFile);
if(f==NULL)
{
hexchat_print(ph,"no theme in homedir, checking global theme");
@ -120,10 +122,12 @@ void loadThemes(){
val=split(line,'=');
printf("line: %s\n",line);
printf("val: %s\n",val);
if (strcmp(toUpper(line),"OFF_LINE")==0) notRunTheme=themeAdd(notRunTheme,val);
if (strcmp(toUpper(line),"TITLE_LINE")==0) titleTheme=themeAdd(titleTheme,val);
if (strcmp(toUpper(line),"MP3_LINE")==0) mp3Theme=themeAdd(mp3Theme,val);
if (strcmp(toUpper(line),"OGG_LINE")==0) mp3Theme=themeAdd(oggTheme,val);
lineCap=toUpper(line);
if (strcmp(lineCap,"OFF_LINE")==0) notRunTheme=themeAdd(notRunTheme,val);
if (strcmp(lineCap,"TITLE_LINE")==0) titleTheme=themeAdd(titleTheme,val);
if (strcmp(lineCap,"MP3_LINE")==0) mp3Theme=themeAdd(mp3Theme,val);
if (strcmp(lineCap,"OGG_LINE")==0) mp3Theme=themeAdd(oggTheme,val);
free(lineCap);
}
fclose(f);
hexchat_print(ph, "theme loaded successfull\n");

View File

@ -208,8 +208,6 @@ get_filename (char *word[], char *word_eol[])
int len;
char *file;
len = strlen (word[2]);
/* if called as /load "filename.pl" the only difference between word and
* word_eol will be the two quotes
*/

View File

@ -6,7 +6,7 @@
# bviktor, 2012
# bviktor, 2012
# Gato Loko, 2016
# Pedro Alejandro López-Valencia <palopezv@gmail.com>, 2016
# Pedro A. López-Valencia <palopezv@gmail.com>, 2016
# Víctor <vegadark89@gmail.com>, 2013-2014
# Víctor <vegadark89@gmail.com>, 2012-2013
# Víctor <vegadark89@gmail.com>, 2014-2016
@ -16,8 +16,8 @@ msgstr ""
"Project-Id-Version: HexChat\n"
"Report-Msgid-Bugs-To: www.hexchat.org\n"
"POT-Creation-Date: 2016-10-08 15:09-0400\n"
"PO-Revision-Date: 2016-10-08 19:09+0000\n"
"Last-Translator: TingPing <tingping@tingping.se>\n"
"PO-Revision-Date: 2016-10-08 20:54+0000\n"
"Last-Translator: Gato Loko\n"
"Language-Team: Spanish (http://www.transifex.com/hexchat/hexchat/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -40,7 +40,7 @@ msgstr "HexChat soporta características como: DCC, SASL, proxies, autocorrector
#: ../data/misc/hexchat.appdata.xml.in.h:3
msgid "Main Chat Window"
msgstr ""
msgstr "Ventana principal de conversación"
#: ../data/misc/hexchat.desktop.in.h:1
msgid "HexChat"
@ -970,7 +970,7 @@ msgstr "%C29*%O$tCapacidades admitidas: %C29$2%O"
#: ../src/common/textevents.h:21
msgid "%C29*%O$tCapabilities removed: %C29$2%O"
msgstr "%C29*%O$Capacidades removidas: %C29$2%O"
msgstr "%C29*%O$tCapacidades removidas: %C29$2%O"
#: ../src/common/textevents.h:24
msgid "%C23*%O$tCapabilities supported: %C29$2%O"
@ -4672,7 +4672,7 @@ msgstr "El nombre de usuario no puede estar en blanco."
#: ../src/fe-gtk/servlistgui.c:1578
msgid "You cannot have an empty nick name."
msgstr ""
msgstr "No puede tener un nick en blanco."
#: ../src/fe-gtk/servlistgui.c:1585
msgid "You must have two unique nick names."

View File

@ -8,7 +8,8 @@
# Johnny A. Solbu <transifex@solbu.net>, 2015
# Xtreme Power <neethan98@hotmail.ca>, 2013
# pere <pere-transifex@hungry.com>, 2016
# Thor K. H. <nitrolinken@gmail.com>, 2013,2015
# pere <pere-transifex@hungry.com>, 2016
# Thor K. H. <nitrolinken@gmail.com>, 2012-2013,2015
# Thor K. H. <nitrolinken@gmail.com>, 2012-2013
# Xtreme Power <neethan98@hotmail.ca>, 2013
msgid ""
@ -16,8 +17,8 @@ msgstr ""
"Project-Id-Version: HexChat\n"
"Report-Msgid-Bugs-To: www.hexchat.org\n"
"POT-Creation-Date: 2016-10-08 15:09-0400\n"
"PO-Revision-Date: 2016-10-08 19:09+0000\n"
"Last-Translator: TingPing <tingping@tingping.se>\n"
"PO-Revision-Date: 2016-10-08 19:59+0000\n"
"Last-Translator: Johnny A. Solbu <transifex@solbu.net>\n"
"Language-Team: Norwegian Bokmål (http://www.transifex.com/hexchat/hexchat/language/nb/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -40,7 +41,7 @@ msgstr "HexChat støtter funksjoner som: DCC, SASL, mellomtjenere, stavekontroll
#: ../data/misc/hexchat.appdata.xml.in.h:3
msgid "Main Chat Window"
msgstr ""
msgstr "Hovedvinduet "
#: ../data/misc/hexchat.desktop.in.h:1
msgid "HexChat"
@ -4672,7 +4673,7 @@ msgstr "Brukernavn kan ikke være tomt."
#: ../src/fe-gtk/servlistgui.c:1578
msgid "You cannot have an empty nick name."
msgstr ""
msgstr "Du kan ikke ha et tomt kallenavn."
#: ../src/fe-gtk/servlistgui.c:1585
msgid "You must have two unique nick names."

View File

@ -12,8 +12,8 @@ msgstr ""
"Project-Id-Version: HexChat\n"
"Report-Msgid-Bugs-To: www.hexchat.org\n"
"POT-Creation-Date: 2016-10-08 15:09-0400\n"
"PO-Revision-Date: 2016-10-08 19:09+0000\n"
"Last-Translator: TingPing <tingping@tingping.se>\n"
"PO-Revision-Date: 2016-10-09 09:37+0000\n"
"Last-Translator: Besnik <besnik@programeshqip.org>\n"
"Language-Team: Albanian (http://www.transifex.com/hexchat/hexchat/language/sq/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -36,7 +36,7 @@ msgstr "HexChat-i mbulon veçori të tilla si: DCC, SASL, ndërmjetës, drejtshk
#: ../data/misc/hexchat.appdata.xml.in.h:3
msgid "Main Chat Window"
msgstr ""
msgstr "Dritarja Kryesore e Fjalosjeve"
#: ../data/misc/hexchat.desktop.in.h:1
msgid "HexChat"
@ -74,15 +74,15 @@ msgstr "Po dilet"
#: ../src/common/chanopt.c:79
msgid "OFF"
msgstr ""
msgstr "OFF"
#: ../src/common/chanopt.c:81
msgid "ON"
msgstr ""
msgstr "ON"
#: ../src/common/chanopt.c:83
msgid "{unset}"
msgstr ""
msgstr "{e parregulluar}"
#: ../src/common/chanopt.c:128 ../src/common/text.c:1314
#: ../src/fe-gtk/notifygui.c:125 ../src/fe-gtk/setup.c:1877
@ -4668,7 +4668,7 @@ msgstr "Emri i përdoruesit nuk mund të lihet i zbrazët."
#: ../src/fe-gtk/servlistgui.c:1578
msgid "You cannot have an empty nick name."
msgstr ""
msgstr "Smund të keni një nofkë të zbrazët."
#: ../src/fe-gtk/servlistgui.c:1585
msgid "You must have two unique nick names."

View File

@ -829,6 +829,7 @@ load_default_config(void)
prefs.hex_gui_win_width = 640;
prefs.hex_irc_ban_type = 1;
prefs.hex_irc_join_delay = 5;
prefs.hex_net_ping_timeout = 60;
prefs.hex_net_reconnect_delay = 10;
prefs.hex_notify_timeout = 15;
prefs.hex_text_max_indent = 256;

View File

@ -1337,6 +1337,33 @@ cmd_menu (struct session *sess, char *tbuf, char *word[], char *word_eol[])
return FALSE;
}
static int
mhop_cb (struct User *user, multidata *data)
{
if (!user->hop)
{
data->nicks[data->i] = user->nick;
data->i++;
}
return TRUE;
}
static int
cmd_mhop (struct session *sess, char *tbuf, char *word[], char *word_eol[])
{
char **nicks = g_new0 (char *, sess->total - sess->hops);
multidata data;
data.nicks = nicks;
data.i = 0;
tree_foreach (sess->usertree, (tree_traverse_func *)mhop_cb, &data);
send_channel_modes (sess, tbuf, nicks, 0, data.i, '+', 'h', 0);
g_free (nicks);
return TRUE;
}
static int
mkick_cb (struct User *user, multidata *data)
{
@ -3970,6 +3997,8 @@ const struct commands xc_cmds[] = {
N_("ME <action>, sends the action to the current channel (actions are written in the 3rd person, like /me jumps)")},
{"MENU", cmd_menu, 0, 0, 1, "MENU [-eX] [-i<ICONFILE>] [-k<mod>,<key>] [-m] [-pX] [-r<X,group>] [-tX] {ADD|DEL} <path> [command] [unselect command]\n"
" See http://hexchat.readthedocs.org/en/latest/plugins.html#controlling-the-gui for more details."},
{"MHOP", cmd_mhop, 1, 1, 1,
N_("MHOP, Mass hop's all users in the current channel (needs chanop)")},
{"MKICK", cmd_mkick, 1, 1, 1,
N_("MKICK, Mass kicks everyone except you in the current channel (needs chanop)")},
{"MODE", cmd_mode, 1, 0, 1, 0},

View File

@ -1517,27 +1517,38 @@ void
pevent_make_pntevts (void)
{
int i, m;
char out[1024];
for (i = 0; i < NUM_XP; i++)
{
g_free (pntevts[i]);
if (pevt_build_string (pntevts_text[i], &(pntevts[i]), &m) != 0)
{
g_snprintf (out, sizeof (out),
_("Error parsing event %s.\nLoading default."), te[i].name);
fe_message (out, FE_MSG_WARN);
g_free (pntevts_text[i]);
/* make-te.c sets this 128 flag (DON'T call gettext() flag) */
if (te[i].num_args & 128)
pntevts_text[i] = g_strdup (te[i].def);
else
const gboolean translate = !(te[i].num_args & 128);
g_warning ("Error parsing event %s\nLoading default.", te[i].name);
g_free (pntevts_text[i]);
if (translate)
pntevts_text[i] = g_strdup (_(te[i].def));
if (pevt_build_string (pntevts_text[i], &(pntevts[i]), &m) != 0)
else
pntevts_text[i] = g_strdup (te[i].def);
if (pevt_build_string (pntevts_text[i], &(pntevts[i]), &m) != 0 && !translate)
{
fprintf (stderr,
"HexChat CRITICAL *** default event text failed to build!\n");
abort ();
g_error ("HexChat CRITICAL *** default event text failed to build!");
}
else
{
g_warning ("Error parsing translated event %s\nLoading untranslated.", te[i].name);
g_free (pntevts_text[i]);
pntevts_text[i] = g_strdup (te[i].def);
if (pevt_build_string (pntevts_text[i], &(pntevts[i]), &m) != 0)
{
g_error ("HexChat CRITICAL *** default event text failed to build!");
}
}
}
}

View File

@ -1 +1 @@
2.12.1-2
2.12.2