version 0.70 v0.70
authorAntoine Jacquet <royale@zerezo.com>
Sat, 5 Feb 2005 23:00:00 +0000 (00:00 +0100)
committerAntoine Jacquet <royale@zerezo.com>
Sat, 5 Feb 2005 23:00:00 +0000 (00:00 +0100)
* Makefile was improved to easily build packages
* Windows binaries are now available
* patch to make parsing more robust and dutch translation updated (thank you Wouter Horré)
* added an option to display pictures for the users
* added the irssistats logo with an option to hide it
* expand the "~" character in configuration file to the home directory
* added 3 themes : biseau, damier and niflheim
* gcc optimization to speed up irssistats

32 files changed:
CHANGELOG
Makefile
README
data/biseau.css [new file with mode: 0644]
data/biseau_corner1.gif [new file with mode: 0644]
data/biseau_corner2.gif [new file with mode: 0644]
data/biseau_corner3.gif [new file with mode: 0644]
data/biseau_corner4.gif [new file with mode: 0644]
data/blue.css
data/damier.css [new file with mode: 0644]
data/damier_background.gif [new file with mode: 0644]
data/damier_title.png [new file with mode: 0644]
data/dark.css
data/default.css
data/grayscale.css
data/namour.css
data/niflheim.css [new file with mode: 0644]
data/pisg.css
data/zeduel.css
data/zerezo.css
debian/changelog [new file with mode: 0644]
debian/compat [new file with mode: 0644]
debian/control [new file with mode: 0644]
debian/copyright [new file with mode: 0644]
debian/docs [new file with mode: 0644]
debian/rules [new file with mode: 0755]
irssistats.1
irssistats.c
irssistats.sgml
rpm/irssistats.spec [new file with mode: 0644]
sample.configfile
sample.photofile [new file with mode: 0644]

index 7720b67..6a5c7ad 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,15 @@
 Change log file for irssistats
 
 Change log file for irssistats
 
+version 0.70   (2005-06-01)
+       * Makefile was improved to easily build packages
+       * Windows binaries are now available
+       * patch to make parsing more robust and dutch translation updated (thank you Wouter Horré)
+       * added an option to display pictures for the users
+       * added the irssistats logo with an option to hide it
+       * expand the "~" character in configuration file to the home directory
+       * added 3 themes : biseau, damier and niflheim
+       * gcc optimization to speed up irssistats
+
 version 0.62   (2004-05-03)
        * estonian support (thank you Martin Vool)
 
 version 0.62   (2004-05-03)
        * estonian support (thank you Martin Vool)
 
index 954a34d..e9e6f92 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,3 +1,4 @@
+VER = 0.70
 PRE = /usr/local
 BIN = $(PRE)/bin
 DAT = $(PRE)/share/irssistats/data
 PRE = /usr/local
 BIN = $(PRE)/bin
 DAT = $(PRE)/share/irssistats/data
@@ -5,10 +6,12 @@ DOC = $(PRE)/share/doc/irssistats
 MAN = $(PRE)/share/man/man1
 
 irssistats:irssistats.c
 MAN = $(PRE)/share/man/man1
 
 irssistats:irssistats.c
-       gcc -o irssistats irssistats.c
+       gcc -O2 -o irssistats irssistats.c
 
 clean:
 
 clean:
-       rm -f irssistats 
+       rm -f irssistats irssistats.exe
+       rm -f build-stamp configure-stamp debian/irssistats.substvars debian/files
+       rm -rf debian/irssistats rpm/BUILD rpm/SPECS rpm/SOURCES rpm/SRPMS rpm/RPMS
 
 install:irssistats
        mkdir -p $(BIN) $(DAT) $(DOC) $(MAN)
 
 install:irssistats
        mkdir -p $(BIN) $(DAT) $(DOC) $(MAN)
@@ -21,3 +24,20 @@ uninstall:
        rm -f $(BIN)/irssistats
        rm -rf $(DAT) $(DOC)
        rm -f $(MAN)/irssistats.1
        rm -f $(BIN)/irssistats
        rm -rf $(DAT) $(DOC)
        rm -f $(MAN)/irssistats.1
+
+tar: clean
+       cd .. && tar zcvf irssistats-$(VER).tar.gz irssistats-$(VER)
+
+rpm: tar
+       mkdir -p rpm/BUILD rpm/SPECS rpm/SOURCES rpm/SRPMS rpm/RPMS
+       rpm -ta ../irssistats-$(VER).tar.gz --define "_topdir `pwd`/rpm"
+       cp rpm/*/*.rpm rpm/*/*/*.rpm ..
+
+deb: clean
+       dpkg-buildpackage -us -uc -rfakeroot
+
+win: irssistats.c
+       i586-mingw32msvc-gcc -O2 -o irssistats.exe irssistats.c
+       cd .. && zip -r irssistats-$(VER).zip irssistats-$(VER)/{irssistats.exe,README,CHANGELOG,COPYING,irssistats.sgml,sample.configfile,sample.nickfile,data}
+
+dist: tar rpm deb win
\ No newline at end of file
diff --git a/README b/README
index eda71da..ec98bd5 100644 (file)
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-irssistats 0.62
+irssistats 0.70
 site: http://royale.zerezo.com/irssistats/
 mail: royale@zerezo.com
 
 site: http://royale.zerezo.com/irssistats/
 mail: royale@zerezo.com
 
@@ -26,8 +26,14 @@ The nickfile must not contain any comments.
 The <NULL> final nick will remove matching nicks from all statistics, except from "Some URLs" and "Some topics"...
 You can also take a look at the "sample.nickfile" in this package.
 
 The <NULL> final nick will remove matching nicks from all statistics, except from "Some URLs" and "Some topics"...
 You can also take a look at the "sample.nickfile" in this package.
 
+photofile:
+Since version 0.70 of irssistats, you can use a photofile to display pictures for users.
+Each line of the photofile contains the final nick and an URL for the image.
+Examples :
+  royale http://royale.zerezo.com/chat/faces/happy40.png (a full address)
+  sektor ../chat/faces/happy40.png (a relative address)
+
 links:
 links:
-http://torus.lnet.lut.fi/ircstats/
+http://tnsp.org/fisg.php
 http://pisg.sourceforge.net/
 http://pisg.sourceforge.net/
-http://users.pandora.be/becquart/cisg/
 http://netti.nic.fi/~mauvinen/mircstats/
 http://netti.nic.fi/~mauvinen/mircstats/
diff --git a/data/biseau.css b/data/biseau.css
new file mode 100644 (file)
index 0000000..e0f8333
--- /dev/null
@@ -0,0 +1,137 @@
+/* "biseau" theme from Pronostiks.com */
+
+body {
+  background: #ddddee;
+  text-align: center;
+}
+
+#irssistats * {
+  font-family: tahoma;
+  font-size: 9pt;
+}
+
+#irssistats {
+  width: 89%;
+  margin: auto;
+}
+
+#irssistats h1, #irssistats h2 {
+  font-weight: bold;
+  padding-left: 5px;
+  margin: 0;
+}
+
+#irssistats h1 {
+  color: #6b78a4;
+  font-size: 18pt;
+}
+
+#irssistats h2 {
+  color: #ffffff;
+  font-size: 10pt;
+  height: 18px;
+  background: #6b78a4 url('biseau_corner1.gif');
+  background-repeat: no-repeat;
+  background-position: top right;
+  padding-right: 8px;
+}
+
+#irssistats_legend td {
+  text-align: left;
+}
+
+#irssistats_legend, #irssistats_lastdays, #irssistats_tophours, #irssistats_topusers, #irssistats_topuserstime, #irssistats_randtopics, #irssistats_randurls, #irssistats_topwords, #irssistats_bignumbers {
+  background: #ffffff;
+  margin: 10px;
+  text-align: center;
+  border-bottom: 2px #6b78a4 solid;
+}
+
+#irssistats table {
+  width: 100%;
+  border-left: 6px #6b78a4 double;
+  border-right: 2px #6b78a4 solid;
+  margin: 0;
+  padding: 15px;
+}
+
+#irssistats_topusers td, #irssistats_topuserstime td, #irssistats_randtopics td, #irssistats_randurls td, #irssistats_topwords td, #irssistats_bignumbers td {
+  border: 1px #6b78a4 solid;
+  text-align: center;
+}
+
+#irssistats th {
+  height: 18px;
+  background: #ddddee url('biseau_corner4.gif');
+  background-repeat: no-repeat;
+  background-position: top right;
+  padding-right: 8px;
+  border: 0;
+}
+
+#irssistats_legend p, #irssistats_lastdays p, #irssistats_tophours p, #irssistats_topusers p, #irssistats_topuserstime p, #irssistats_randtopics p, #irssistats_randurls p, #irssistats_topwords p, #irssistats_bignumbers p {
+  border-left: 6px #6b78a4 double;
+  border-right: 2px #6b78a4 solid;
+  margin: 0;
+  padding: 15px;
+}
+
+#irssistats div.h1, #irssistats div.h2, #irssistats div.h3, #irssistats div.h4, #irssistats div.hm {
+  float: left;
+  height: 15px;
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-size: 0;
+}
+
+#irssistats div.v1, #irssistats div.v2, #irssistats div.v3, #irssistats div.v4, #irssistats div.vm {
+  width: 15px;
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-size: 0;
+}
+
+#irssistats div.h1, #irssistats div.v1 {
+  background: #6b78a4;
+}
+
+#irssistats div.h2, #irssistats div.v2 {
+  background: #8899cc;
+}
+
+#irssistats div.h3, #irssistats div.v3 {
+  background: #aabbdd;
+}
+
+#irssistats div.h4, #irssistats div.v4 {
+  background: #ddddee;
+}
+
+#irssistats div.hm, #irssistats div.vm {
+  background: #888888 url('biseau_corner4.gif');
+  background-repeat: no-repeat;
+  background-position: top right;
+}
+
+#irssistats A {
+  color: #5a658a;
+  text-decoration: none;
+}
+
+#irssistats A:hover {
+  text-decoration: underline;
+}
+
+#irssistats img {
+  border: 0;
+}
+
+#irssistats small {
+  font-size: 7pt;
+}
+
+#irssistats .tdphoto {
+  text-align: center;
+}
\ No newline at end of file
diff --git a/data/biseau_corner1.gif b/data/biseau_corner1.gif
new file mode 100644 (file)
index 0000000..8daef2b
Binary files /dev/null and b/data/biseau_corner1.gif differ
diff --git a/data/biseau_corner2.gif b/data/biseau_corner2.gif
new file mode 100644 (file)
index 0000000..e17fb10
Binary files /dev/null and b/data/biseau_corner2.gif differ
diff --git a/data/biseau_corner3.gif b/data/biseau_corner3.gif
new file mode 100644 (file)
index 0000000..315feca
Binary files /dev/null and b/data/biseau_corner3.gif differ
diff --git a/data/biseau_corner4.gif b/data/biseau_corner4.gif
new file mode 100644 (file)
index 0000000..620e53f
Binary files /dev/null and b/data/biseau_corner4.gif differ
index 8d5ff28..89bb80d 100644 (file)
@@ -5,9 +5,9 @@ body {
 }
 
 #irssistats * {
 }
 
 #irssistats * {
-       font-family: Verdana, Arial, Helvetica, sans-serif;
+  font-family: Verdana, Arial, Helvetica, sans-serif;
   color: #000000;
   color: #000000;
-       margin: 0;
+  margin: 0;
 }
 
 #irssistats A {
 }
 
 #irssistats A {
@@ -19,32 +19,32 @@ body {
 }
 
 #irssistats img {
 }
 
 #irssistats img {
-       border: 0;
+  border: 0;
 }
 
 #irssistats h1 {
 }
 
 #irssistats h1 {
-       font-size: 20pt;
+  font-size: 20pt;
   margin-bottom: 10px;
   color: #8888FF;
 }
 
 #irssistats h2 {
   margin-bottom: 10px;
   color: #8888FF;
 }
 
 #irssistats h2 {
-       font-size: 15pt;
+  font-size: 15pt;
   margin-bottom: 5px;
   color: #AAAAFF;
 }
 
 #irssitats p {
   margin-bottom: 5px;
   color: #AAAAFF;
 }
 
 #irssitats p {
-       font-size: 10pt;
+  font-size: 10pt;
 }
 
 #irssistats th {
 }
 
 #irssistats th {
-       font-size: 9pt;
+  font-size: 9pt;
   background: #CCCCFF;
 }
 
 #irssistats td {
   background: #CCCCFF;
 }
 
 #irssistats td {
-       font-size: 9pt;
+  font-size: 9pt;
   background: #EEEEFF;
 }
 
   background: #EEEEFF;
 }
 
@@ -53,7 +53,7 @@ body {
 }
 
 #irssistats small {
 }
 
 #irssistats small {
-       font-size: 7pt;
+  font-size: 7pt;
 }
 
 #irssistats table {
 }
 
 #irssistats table {
@@ -62,74 +62,86 @@ body {
 }
 
 #irssistats div {
 }
 
 #irssistats div {
-       padding: 10px;
-       margin: 10px;
-       text-align: center;
+  padding: 10px;
+  margin: 10px;
+  text-align: center;
 }
 
 #irssistats div.h1, #irssistats div.h2, #irssistats div.h3, #irssistats div.h4, #irssistats div.hm {
 }
 
 #irssistats div.h1, #irssistats div.h2, #irssistats div.h3, #irssistats div.h4, #irssistats div.hm {
-       float: left;
-       height: 15px;
-       margin: 0;
-       padding: 0;
+  float: left;
+  height: 15px;
+  margin: 0;
+  padding: 0;
   border: 0;
   font-size: 0;
 }
 
 #irssistats div.v1, #irssistats div.v2, #irssistats div.v3, #irssistats div.v4, #irssistats div.vm {
   border: 0;
   font-size: 0;
 }
 
 #irssistats div.v1, #irssistats div.v2, #irssistats div.v3, #irssistats div.v4, #irssistats div.vm {
-       width: 15px;
-       margin: 0;
-       padding: 0;
-       border: 0;
+  width: 15px;
+  margin: 0;
+  padding: 0;
+  border: 0;
   font-size: 0;
 }
 
 #irssistats div.h1 {
   font-size: 0;
 }
 
 #irssistats div.h1 {
-       background: #0000ff;
+  background: #0000ff;
   background: url('h1.png');
 }
 
 #irssistats div.h2 {
   background: url('h1.png');
 }
 
 #irssistats div.h2 {
-       background: #00ff00;
+  background: #00ff00;
   background: url('h2.png');
 }
 
 #irssistats div.h3 {
   background: url('h2.png');
 }
 
 #irssistats div.h3 {
-       background: #ffff00;
+  background: #ffff00;
   background: url('h3.png');
 }
 
 #irssistats div.h4 {
   background: url('h3.png');
 }
 
 #irssistats div.h4 {
-       background: #ff0000;
+  background: #ff0000;
   background: url('h4.png');
 }
 
 #irssistats div.hm {
   background: url('h4.png');
 }
 
 #irssistats div.hm {
-       background: #ff00ff;
+  background: #ff00ff;
   background: url('hm.png');
 }
 
 #irssistats div.v1 {
   background: url('hm.png');
 }
 
 #irssistats div.v1 {
-       background: #0000ff;
+  background: #0000ff;
   background: url('v1.png');
 }
 
 #irssistats div.v2 {
   background: url('v1.png');
 }
 
 #irssistats div.v2 {
-       background: #00ff00;
+  background: #00ff00;
   background: url('v2.png');
 }
 
 #irssistats div.v3 {
   background: url('v2.png');
 }
 
 #irssistats div.v3 {
-       background: #ffff00;
+  background: #ffff00;
   background: url('v3.png');
 }
 
 #irssistats div.v4 {
   background: url('v3.png');
 }
 
 #irssistats div.v4 {
-       background: #ff0000;
+  background: #ff0000;
   background: url('v4.png');
 }
 
 #irssistats div.vm {
   background: url('v4.png');
 }
 
 #irssistats div.vm {
-       background: #ff00ff;
+  background: #ff00ff;
   background: url('vm.png');
   background: url('vm.png');
+}
+
+#irssistats div.logo {
+  background: url('irssistats_white.png');
+  width: 364px;
+  height: 44px;
+  margin: auto;
+  padding: 0;
+}
+
+#irssistats .tdphoto {
+  text-align: center;
 }
\ No newline at end of file
 }
\ No newline at end of file
diff --git a/data/damier.css b/data/damier.css
new file mode 100644 (file)
index 0000000..393678d
--- /dev/null
@@ -0,0 +1,138 @@
+/* "damier" theme from Pronostiks.com */
+
+body {
+  background: url('damier_background.gif');
+  text-align: center;
+}
+
+#irssistats * {
+  font-family: verdana;
+  font-size: 9pt;
+}
+
+#irssistats {
+  width: 860px;
+  margin: auto;
+}
+
+#irssistats h1 {
+  font-size: 20pt;
+}
+
+#irssistats h2 {
+  font-weight: bold;
+  background: url('damier_title.png');
+  background-repeat: no-repeat;
+  border-bottom: 1px black solid;
+  padding-left: 5px;
+  margin: 0;
+}
+
+#irssistats_legend td {
+  text-align: left;
+}
+
+#irssistats_legend, #irssistats_lastdays, #irssistats_tophours, #irssistats_topusers, #irssistats_topuserstime, #irssistats_randtopics, #irssistats_randurls, #irssistats_topwords, #irssistats_bignumbers {
+  background: #ffffff;
+  border: 1px black solid;
+  -moz-border-radius-topright: 20px;
+  -moz-border-radius-bottomleft: 20px;
+  -moz-border-radius-bottomright: 20px;
+  margin-bottom: 20px;
+}
+
+#irssistats A {
+  color: #a35800;
+  text-decoration: none;
+}
+
+#irssistats A:hover {
+  text-decoration: underline;
+}
+
+.box_content {
+  padding: 10px;
+  text-align: center;
+}
+
+#irssistats table {
+  width: 800px;
+  margin: auto;
+  margin-top: 10px;
+  margin-bottom: 10px;
+}
+
+#irssistats_topusers td, #irssistats_topuserstime td, #irssistats_randtopics td, #irssistats_randurls td, #irssistats_topwords td, #irssistats_bignumbers td {
+  border: 1px #aaaaaa solid;
+  text-align: center;
+  -moz-border-radius: 4px;
+}
+
+#irssistats th {
+  border: 1px black solid;
+  background: url('damier_title.png');
+  background-repeat: no-repeat;
+}
+
+#irssistats img {
+  border: 0;
+}
+
+#irssistats div.h1, #irssistats div.h2, #irssistats div.h3, #irssistats div.h4, #irssistats div.hm {
+  float: left;
+  height: 15px;
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-size: 0;
+}
+
+#irssistats div.v1, #irssistats div.v2, #irssistats div.v3, #irssistats div.v4, #irssistats div.vm {
+  width: 15px;
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-size: 0;
+}
+
+#irssistats div.h1, #irssistats div.v1 {
+  background: #fbc282;
+}
+
+#irssistats div.h2, #irssistats div.v2 {
+  background: #fbcf9b;
+}
+
+#irssistats div.h3, #irssistats div.v3 {
+  background: #fddbb3;
+}
+
+#irssistats div.h4, #irssistats div.v4 {
+  background: #fde7ce;
+}
+
+#irssistats div.hm, #irssistats div.vm {
+  background: #dddddd;
+}
+
+#irssistats small {
+  font-size: 5.5pt;
+}
+
+#irssistats .logo {
+  padding: 10px;
+  background: #ffffff url('irssistats_white.png');
+  background-repeat: no-repeat;
+  background-position: center;
+  width: 364px;
+  height: 44px;
+  margin: auto;
+  margin-top: 10px;
+  margin-bottom: 10px;
+  border: 3px black double;
+  -moz-border-radius: 20px;
+}
+
+#irssistats .tdphoto {
+  text-align: center;
+}
\ No newline at end of file
diff --git a/data/damier_background.gif b/data/damier_background.gif
new file mode 100644 (file)
index 0000000..85b6696
Binary files /dev/null and b/data/damier_background.gif differ
diff --git a/data/damier_title.png b/data/damier_title.png
new file mode 100644 (file)
index 0000000..851b159
Binary files /dev/null and b/data/damier_title.png differ
index 0bf47ba..86676fd 100644 (file)
@@ -5,9 +5,9 @@ body {
 }
 
 #irssistats * {
 }
 
 #irssistats * {
-       font-family: Verdana, Arial, Helvetica, sans-serif;
+  font-family: Verdana, Arial, Helvetica, sans-serif;
   color: #FFFFFF;
   color: #FFFFFF;
-       margin: 0;
+  margin: 0;
 }
 
 #irssistats A {
 }
 
 #irssistats A {
@@ -19,35 +19,35 @@ body {
 }
 
 #irssistats img {
 }
 
 #irssistats img {
-       border: 0;
+  border: 0;
 }
 
 #irssistats h1 {
   color: #AAAAFF;
 }
 
 #irssistats h1 {
   color: #AAAAFF;
-       font-size: 20pt;
+  font-size: 20pt;
   margin-bottom: 10px;
 }
 
 #irssistats h2 {
   color: #FFAAAA;
   margin-bottom: 10px;
 }
 
 #irssistats h2 {
   color: #FFAAAA;
-       font-size: 15pt;
+  font-size: 15pt;
   margin-bottom: 5px;
 }
 
 #irssitats p {
   margin-bottom: 5px;
 }
 
 #irssitats p {
-       font-size: 10pt;
+  font-size: 10pt;
 }
 
 #irssistats th {
 }
 
 #irssistats th {
-       font-size: 9pt;
+  font-size: 9pt;
   background: #552222;
   background: #552222;
-       border: 1px #774444 solid;
+  border: 1px #774444 solid;
 }
 
 #irssistats td {
 }
 
 #irssistats td {
-       font-size: 9pt;
+  font-size: 9pt;
   background: #225522;
   background: #225522;
-       border: 1px #447744 solid;
+  border: 1px #447744 solid;
 }
 
 #irssistats td.oneline {
 }
 
 #irssistats td.oneline {
@@ -55,7 +55,7 @@ body {
 }
 
 #irssistats small {
 }
 
 #irssistats small {
-       font-size: 7pt;
+  font-size: 7pt;
 }
 
 #irssistats table {
 }
 
 #irssistats table {
@@ -64,74 +64,86 @@ body {
 }
 
 #irssistats div {
 }
 
 #irssistats div {
-       padding: 10px;
-       margin: 10px;
-       text-align: center;
+  padding: 10px;
+  margin: 10px;
+  text-align: center;
 }
 
 #irssistats div.h1, #irssistats div.h2, #irssistats div.h3, #irssistats div.h4, #irssistats div.hm {
 }
 
 #irssistats div.h1, #irssistats div.h2, #irssistats div.h3, #irssistats div.h4, #irssistats div.hm {
-       float: left;
-       height: 15px;
-       margin: 0;
-       padding: 0;
+  float: left;
+  height: 15px;
+  margin: 0;
+  padding: 0;
   border: 0;
   font-size: 0;
 }
 
 #irssistats div.v1, #irssistats div.v2, #irssistats div.v3, #irssistats div.v4, #irssistats div.vm {
   border: 0;
   font-size: 0;
 }
 
 #irssistats div.v1, #irssistats div.v2, #irssistats div.v3, #irssistats div.v4, #irssistats div.vm {
-       width: 15px;
-       margin: 0;
-       padding: 0;
-       border: 0;
+  width: 15px;
+  margin: 0;
+  padding: 0;
+  border: 0;
   font-size: 0;
 }
 
 #irssistats div.h1 {
   font-size: 0;
 }
 
 #irssistats div.h1 {
-       background: #0000ff;
+  background: #0000ff;
   background: url('h1.png');
 }
 
 #irssistats div.h2 {
   background: url('h1.png');
 }
 
 #irssistats div.h2 {
-       background: #00ff00;
+  background: #00ff00;
   background: url('h2.png');
 }
 
 #irssistats div.h3 {
   background: url('h2.png');
 }
 
 #irssistats div.h3 {
-       background: #ffff00;
+  background: #ffff00;
   background: url('h3.png');
 }
 
 #irssistats div.h4 {
   background: url('h3.png');
 }
 
 #irssistats div.h4 {
-       background: #ff0000;
+  background: #ff0000;
   background: url('h4.png');
 }
 
 #irssistats div.hm {
   background: url('h4.png');
 }
 
 #irssistats div.hm {
-       background: #ff00ff;
+  background: #ff00ff;
   background: url('hm.png');
 }
 
 #irssistats div.v1 {
   background: url('hm.png');
 }
 
 #irssistats div.v1 {
-       background: #0000ff;
+  background: #0000ff;
   background: url('v1.png');
 }
 
 #irssistats div.v2 {
   background: url('v1.png');
 }
 
 #irssistats div.v2 {
-       background: #00ff00;
+  background: #00ff00;
   background: url('v2.png');
 }
 
 #irssistats div.v3 {
   background: url('v2.png');
 }
 
 #irssistats div.v3 {
-       background: #ffff00;
+  background: #ffff00;
   background: url('v3.png');
 }
 
 #irssistats div.v4 {
   background: url('v3.png');
 }
 
 #irssistats div.v4 {
-       background: #ff0000;
+  background: #ff0000;
   background: url('v4.png');
 }
 
 #irssistats div.vm {
   background: url('v4.png');
 }
 
 #irssistats div.vm {
-       background: #ff00ff;
+  background: #ff00ff;
   background: url('vm.png');
   background: url('vm.png');
+}
+
+#irssistats div.logo {
+  background: url('irssistats_black.png');
+  width: 364px;
+  height: 44px;
+  margin: auto;
+  padding: 0;
+}
+
+#irssistats .tdphoto {
+  text-align: center;
 }
\ No newline at end of file
 }
\ No newline at end of file
index b36f313..0cfc58e 100644 (file)
@@ -5,39 +5,39 @@ body {
 }
 
 #irssistats * {
 }
 
 #irssistats * {
-       font-family: Verdana, Arial, Helvetica, sans-serif;
+  font-family: Verdana, Arial, Helvetica, sans-serif;
   color: #000000;
   color: #000000;
-       margin: 0;
+  margin: 0;
 }
 
 #irssistats img {
 }
 
 #irssistats img {
-       border: 0;
+  border: 0;
 }
 
 #irssistats h1 {
 }
 
 #irssistats h1 {
-       font-size: 20pt;
+  font-size: 20pt;
   margin-bottom: 10px;
 }
 
 #irssistats h2 {
   margin-bottom: 10px;
 }
 
 #irssistats h2 {
-       font-size: 15pt;
+  font-size: 15pt;
   margin-bottom: 5px;
 }
 
 #irssitats p {
   margin-bottom: 5px;
 }
 
 #irssitats p {
-       font-size: 10pt;
+  font-size: 10pt;
 }
 
 #irssistats th {
 }
 
 #irssistats th {
-       font-size: 9pt;
+  font-size: 9pt;
   background: #FFEEEE;
   background: #FFEEEE;
-       border: 1px #FFCCCC solid;
+  border: 1px #FFCCCC solid;
 }
 
 #irssistats td {
 }
 
 #irssistats td {
-       font-size: 9pt;
+  font-size: 9pt;
   background: #EEEEEE;
   background: #EEEEEE;
-       border: 1px #CCCCCC solid;
+  border: 1px #CCCCCC solid;
 }
 
 #irssistats td.oneline {
 }
 
 #irssistats td.oneline {
@@ -45,7 +45,7 @@ body {
 }
 
 #irssistats small {
 }
 
 #irssistats small {
-       font-size: 7pt;
+  font-size: 7pt;
 }
 
 #irssistats table {
 }
 
 #irssistats table {
@@ -54,74 +54,86 @@ body {
 }
 
 #irssistats div {
 }
 
 #irssistats div {
-       padding: 10px;
-       margin: 10px;
-       text-align: center;
+  padding: 10px;
+  margin: 10px;
+  text-align: center;
 }
 
 #irssistats div.h1, #irssistats div.h2, #irssistats div.h3, #irssistats div.h4, #irssistats div.hm {
 }
 
 #irssistats div.h1, #irssistats div.h2, #irssistats div.h3, #irssistats div.h4, #irssistats div.hm {
-       float: left;
-       height: 15px;
-       margin: 0;
-       padding: 0;
+  float: left;
+  height: 15px;
+  margin: 0;
+  padding: 0;
   border: 0;
   font-size: 0;
 }
 
 #irssistats div.v1, #irssistats div.v2, #irssistats div.v3, #irssistats div.v4, #irssistats div.vm {
   border: 0;
   font-size: 0;
 }
 
 #irssistats div.v1, #irssistats div.v2, #irssistats div.v3, #irssistats div.v4, #irssistats div.vm {
-       width: 15px;
-       margin: 0;
-       padding: 0;
-       border: 0;
+  width: 15px;
+  margin: 0;
+  padding: 0;
+  border: 0;
   font-size: 0;
 }
 
 #irssistats div.h1 {
   font-size: 0;
 }
 
 #irssistats div.h1 {
-       background: #0000ff;
+  background: #0000ff;
   background: url('h1.png');
 }
 
 #irssistats div.h2 {
   background: url('h1.png');
 }
 
 #irssistats div.h2 {
-       background: #00ff00;
+  background: #00ff00;
   background: url('h2.png');
 }
 
 #irssistats div.h3 {
   background: url('h2.png');
 }
 
 #irssistats div.h3 {
-       background: #ffff00;
+  background: #ffff00;
   background: url('h3.png');
 }
 
 #irssistats div.h4 {
   background: url('h3.png');
 }
 
 #irssistats div.h4 {
-       background: #ff0000;
+  background: #ff0000;
   background: url('h4.png');
 }
 
 #irssistats div.hm {
   background: url('h4.png');
 }
 
 #irssistats div.hm {
-       background: #ff00ff;
+  background: #ff00ff;
   background: url('hm.png');
 }
 
 #irssistats div.v1 {
   background: url('hm.png');
 }
 
 #irssistats div.v1 {
-       background: #0000ff;
+  background: #0000ff;
   background: url('v1.png');
 }
 
 #irssistats div.v2 {
   background: url('v1.png');
 }
 
 #irssistats div.v2 {
-       background: #00ff00;
+  background: #00ff00;
   background: url('v2.png');
 }
 
 #irssistats div.v3 {
   background: url('v2.png');
 }
 
 #irssistats div.v3 {
-       background: #ffff00;
+  background: #ffff00;
   background: url('v3.png');
 }
 
 #irssistats div.v4 {
   background: url('v3.png');
 }
 
 #irssistats div.v4 {
-       background: #ff0000;
+  background: #ff0000;
   background: url('v4.png');
 }
 
 #irssistats div.vm {
   background: url('v4.png');
 }
 
 #irssistats div.vm {
-       background: #ff00ff;
+  background: #ff00ff;
   background: url('vm.png');
   background: url('vm.png');
+}
+
+#irssistats div.logo {
+  background: url('irssistats_white.png');
+  width: 364px;
+  height: 44px;
+  margin: auto;
+  padding: 0;
+}
+
+#irssistats .tdphoto {
+  text-align: center;
 }
\ No newline at end of file
 }
\ No newline at end of file
index e739063..f4dee01 100644 (file)
@@ -17,9 +17,9 @@ body {
 }
 
 #irssistats * {
 }
 
 #irssistats * {
-       font-family: Verdana, Arial, Helvetica, sans-serif;
+  font-family: Verdana, Arial, Helvetica, sans-serif;
   color: #000000;
   color: #000000;
-       margin: 0;
+  margin: 0;
 }
 
 #irssistats A {
 }
 
 #irssistats A {
@@ -32,33 +32,33 @@ body {
 }
 
 #irssistats img {
 }
 
 #irssistats img {
-       border: 0;
+  border: 0;
 }
 
 #irssistats h1 {
 }
 
 #irssistats h1 {
-       font-size: 20pt;
+  font-size: 20pt;
   margin-bottom: 10px;
   color: #000000;
 }
 
 #irssistats h2 {
   margin-bottom: 10px;
   color: #000000;
 }
 
 #irssistats h2 {
-       font-size: 15pt;
+  font-size: 15pt;
   margin-bottom: 5px;
   color: #555555;
 }
 
 #irssitats p {
   margin-bottom: 5px;
   color: #555555;
 }
 
 #irssitats p {
-       font-size: 10pt;
+  font-size: 10pt;
 }
 
 #irssistats th {
 }
 
 #irssistats th {
-       font-size: 9pt;
+  font-size: 9pt;
   color: #ffffff;
   background: #555555;
 }
 
 #irssistats td {
   color: #ffffff;
   background: #555555;
 }
 
 #irssistats td {
-       font-size: 8pt;
+  font-size: 8pt;
   background: #ffffff;
   border: 1px #cccccc dotted;
 }
   background: #ffffff;
   border: 1px #cccccc dotted;
 }
@@ -68,7 +68,7 @@ body {
 }
 
 #irssistats small {
 }
 
 #irssistats small {
-       font-size: 6pt;
+  font-size: 6pt;
 }
 
 #irssistats table {
 }
 
 #irssistats table {
@@ -77,44 +77,52 @@ body {
 }
 
 #irssistats div {
 }
 
 #irssistats div {
-       padding: 10px;
-       margin: 10px;
-       text-align: center;
+  padding: 10px;
+  margin: 10px;
+  text-align: center;
 }
 
 #irssistats div.h1, #irssistats div.h2, #irssistats div.h3, #irssistats div.h4, #irssistats div.hm {
 }
 
 #irssistats div.h1, #irssistats div.h2, #irssistats div.h3, #irssistats div.h4, #irssistats div.hm {
-       float: left;
-       height: 15px;
-       margin: 0;
-       padding: 0;
+  float: left;
+  height: 15px;
+  margin: 0;
+  padding: 0;
   border: 0;
   font-size: 0;
 }
 
 #irssistats div.v1, #irssistats div.v2, #irssistats div.v3, #irssistats div.v4, #irssistats div.vm {
   border: 0;
   font-size: 0;
 }
 
 #irssistats div.v1, #irssistats div.v2, #irssistats div.v3, #irssistats div.v4, #irssistats div.vm {
-       width: 15px;
-       margin: 0;
-       padding: 0;
-       border: 0;
+  width: 15px;
+  margin: 0;
+  padding: 0;
+  border: 0;
   font-size: 0;
 }
 
 #irssistats div.h1, #irssistats div.v1 {
   font-size: 0;
 }
 
 #irssistats div.h1, #irssistats div.v1 {
-       background: #000000;
+  background: #000000;
 }
 
 #irssistats div.h2, #irssistats div.v2 {
 }
 
 #irssistats div.h2, #irssistats div.v2 {
-       background: #777777;
+  background: #777777;
 }
 
 #irssistats div.h3, #irssistats div.v3 {
 }
 
 #irssistats div.h3, #irssistats div.v3 {
-       background: #aaaaaa;
+  background: #aaaaaa;
 }
 
 #irssistats div.h4, #irssistats div.v4 {
 }
 
 #irssistats div.h4, #irssistats div.v4 {
-       background: #dddddd;
+  background: #dddddd;
 }
 
 #irssistats div.hm, #irssistats div.vm {
 }
 
 #irssistats div.hm, #irssistats div.vm {
-       background: #888888;
+  background: #888888;
 }
 }
+
+#irssistats div.logo {
+  display: none;
+}
+
+#irssistats .tdphoto {
+  text-align: center;
+}
\ No newline at end of file
index db74b22..1d109fe 100644 (file)
@@ -5,9 +5,9 @@ body {
 }
 
 #irssistats * {
 }
 
 #irssistats * {
-       font-family: Verdana, Arial, Helvetica, sans-serif;
+  font-family: Verdana, Arial, Helvetica, sans-serif;
   color: #DDAAFF;
   color: #DDAAFF;
-       margin: 0;
+  margin: 0;
 }
 
 #irssistats A {
 }
 
 #irssistats A {
@@ -19,32 +19,32 @@ body {
 }
 
 #irssistats img {
 }
 
 #irssistats img {
-       border: 0;
+  border: 0;
 }
 
 #irssistats h1 {
 }
 
 #irssistats h1 {
-       font-size: 20pt;
+  font-size: 20pt;
   margin-bottom: 10px;
   color: #FFC8C8;
 }
 
 #irssistats h2 {
   margin-bottom: 10px;
   color: #FFC8C8;
 }
 
 #irssistats h2 {
-       font-size: 15pt;
+  font-size: 15pt;
   margin-bottom: 5px;
   color: #FFC8C8;
 }
 
 #irssitats p {
   margin-bottom: 5px;
   color: #FFC8C8;
 }
 
 #irssitats p {
-       font-size: 10pt;
+  font-size: 10pt;
 }
 
 #irssistats th {
 }
 
 #irssistats th {
-       font-size: 9pt;
+  font-size: 9pt;
   background: #550088;
 }
 
 #irssistats td {
   background: #550088;
 }
 
 #irssistats td {
-       font-size: 9pt;
+  font-size: 9pt;
   background: #7711AA;
 }
 
   background: #7711AA;
 }
 
@@ -53,7 +53,7 @@ body {
 }
 
 #irssistats small {
 }
 
 #irssistats small {
-       font-size: 7pt;
+  font-size: 7pt;
 }
 
 #irssistats table {
 }
 
 #irssistats table {
@@ -62,74 +62,82 @@ body {
 }
 
 #irssistats div {
 }
 
 #irssistats div {
-       padding: 10px;
-       margin: 10px;
-       text-align: center;
+  padding: 10px;
+  margin: 10px;
+  text-align: center;
 }
 
 #irssistats div.h1, #irssistats div.h2, #irssistats div.h3, #irssistats div.h4, #irssistats div.hm {
 }
 
 #irssistats div.h1, #irssistats div.h2, #irssistats div.h3, #irssistats div.h4, #irssistats div.hm {
-       float: left;
-       height: 15px;
-       margin: 0;
-       padding: 0;
+  float: left;
+  height: 15px;
+  margin: 0;
+  padding: 0;
   border: 0;
   font-size: 0;
 }
 
 #irssistats div.v1, #irssistats div.v2, #irssistats div.v3, #irssistats div.v4, #irssistats div.vm {
   border: 0;
   font-size: 0;
 }
 
 #irssistats div.v1, #irssistats div.v2, #irssistats div.v3, #irssistats div.v4, #irssistats div.vm {
-       width: 15px;
-       margin: 0;
-       padding: 0;
-       border: 0;
+  width: 15px;
+  margin: 0;
+  padding: 0;
+  border: 0;
   font-size: 0;
 }
 
 #irssistats div.h1 {
   font-size: 0;
 }
 
 #irssistats div.h1 {
-       background: #0000ff;
+  background: #0000ff;
   background: url('h1.png');
 }
 
 #irssistats div.h2 {
   background: url('h1.png');
 }
 
 #irssistats div.h2 {
-       background: #00ff00;
+  background: #00ff00;
   background: url('h2.png');
 }
 
 #irssistats div.h3 {
   background: url('h2.png');
 }
 
 #irssistats div.h3 {
-       background: #ffff00;
+  background: #ffff00;
   background: url('h3.png');
 }
 
 #irssistats div.h4 {
   background: url('h3.png');
 }
 
 #irssistats div.h4 {
-       background: #ff0000;
+  background: #ff0000;
   background: url('h4.png');
 }
 
 #irssistats div.hm {
   background: url('h4.png');
 }
 
 #irssistats div.hm {
-       background: #ff00ff;
+  background: #ff00ff;
   background: url('hm.png');
 }
 
 #irssistats div.v1 {
   background: url('hm.png');
 }
 
 #irssistats div.v1 {
-       background: #0000ff;
+  background: #0000ff;
   background: url('v1.png');
 }
 
 #irssistats div.v2 {
   background: url('v1.png');
 }
 
 #irssistats div.v2 {
-       background: #00ff00;
+  background: #00ff00;
   background: url('v2.png');
 }
 
 #irssistats div.v3 {
   background: url('v2.png');
 }
 
 #irssistats div.v3 {
-       background: #ffff00;
+  background: #ffff00;
   background: url('v3.png');
 }
 
 #irssistats div.v4 {
   background: url('v3.png');
 }
 
 #irssistats div.v4 {
-       background: #ff0000;
+  background: #ff0000;
   background: url('v4.png');
 }
 
 #irssistats div.vm {
   background: url('v4.png');
 }
 
 #irssistats div.vm {
-       background: #ff00ff;
+  background: #ff00ff;
   background: url('vm.png');
   background: url('vm.png');
+}
+
+#irssistats div.logo {
+  display: none;
+}
+
+#irssistats .tdphoto {
+  text-align: center;
 }
\ No newline at end of file
 }
\ No newline at end of file
diff --git a/data/niflheim.css b/data/niflheim.css
new file mode 100644 (file)
index 0000000..17e7ea4
--- /dev/null
@@ -0,0 +1,149 @@
+/* Black background */\r
+\r
+body {\r
+  background: #000000;\r
+}\r
+\r
+#irssistats * {\r
+  font-family: Verdana, Arial, Helvetica, sans-serif;\r
+  color: #FFFFFF;\r
+  margin: 0;\r
+}\r
+\r
+#irssistats A {\r
+  color: #FFFFFF;\r
+}\r
+\r
+#irssistats A:hover {\r
+  color: #FFFFFF;\r
+}\r
+\r
+#irssistats img {\r
+  border: 0;\r
+}\r
+\r
+#irssistats h1 {\r
+  color: #FFFFFF;\r
+  font-size: 20pt;\r
+  margin-bottom: 10px;\r
+}\r
+\r
+#irssistats h2 {\r
+  color: #FFFFFF;\r
+  font-size: 15pt;\r
+  margin-bottom: 5px;\r
+}\r
+\r
+#irssitats p {\r
+  font-size: 10pt;\r
+}\r
+\r
+#irssistats th {\r
+  font-size: 9pt;\r
+  background: #552222;\r
+  border: 1px #774444 solid;\r
+}\r
+\r
+#irssistats td {\r
+  font-size: 9pt;\r
+  background: #333333;\r
+  border: 1px #424242 solid;\r
+}\r
+\r
+#irssistats td.oneline {\r
+  width: 100px;\r
+}\r
+\r
+#irssistats small {\r
+  font-size: 7pt;\r
+}\r
+\r
+#irssistats table {\r
+  margin-left: auto;\r
+  margin-right: auto; \r
+}\r
+\r
+#irssistats div {\r
+  padding: 10px;\r
+  margin: 10px;\r
+  text-align: center;\r
+}\r
+\r
+#irssistats div.h1, #irssistats div.h2, #irssistats div.h3, #irssistats div.h4, #irssistats div.hm {\r
+  float: left;\r
+  height: 15px;\r
+  margin: 0;\r
+  padding: 0;\r
+  border: 0;\r
+  font-size: 0;\r
+}\r
+\r
+#irssistats div.v1, #irssistats div.v2, #irssistats div.v3, #irssistats div.v4, #irssistats div.vm {\r
+  width: 15px;\r
+  margin: 0;\r
+  padding: 0;\r
+  border: 0;\r
+  font-size: 0;\r
+}\r
+\r
+#irssistats div.h1 {\r
+  background: #0000ff;\r
+  background: url('h1.png');\r
+}\r
+\r
+#irssistats div.h2 {\r
+  background: #00ff00;\r
+  background: url('h2.png');\r
+}\r
+\r
+#irssistats div.h3 {\r
+  background: #ffff00;\r
+  background: url('h3.png');\r
+}\r
+\r
+#irssistats div.h4 {\r
+  background: #ff0000;\r
+  background: url('h4.png');\r
+}\r
+\r
+#irssistats div.hm {\r
+  background: #ff00ff;\r
+  background: url('hm.png');\r
+}\r
+\r
+#irssistats div.v1 {\r
+  background: #0000ff;\r
+  background: url('v1.png');\r
+}\r
+\r
+#irssistats div.v2 {\r
+  background: #00ff00;\r
+  background: url('v2.png');\r
+}\r
+\r
+#irssistats div.v3 {\r
+  background: #ffff00;\r
+  background: url('v3.png');\r
+}\r
+\r
+#irssistats div.v4 {\r
+  background: #ff0000;\r
+  background: url('v4.png');\r
+}\r
+\r
+#irssistats div.vm {\r
+  background: #ff00ff;\r
+  background: url('vm.png');\r
+}\r
+
+#irssistats div.logo {
+  background: url('irssistats_white.png');
+  width: 364px;
+  height: 44px;
+  margin: auto;
+  padding: 0;
+}
+
+#irssistats .tdphoto {
+  text-align: center;
+}
\ No newline at end of file
index e4fb009..063409d 100644 (file)
@@ -15,7 +15,7 @@ body {
   font-family: Verdana, Arial, sans-serif;
   font-size: 13px;
   color: black;
   font-family: Verdana, Arial, sans-serif;
   font-size: 13px;
   color: black;
-       margin: 0;
+  margin: 0;
 }
 
 #irssistats a {
 }
 
 #irssistats a {
@@ -36,7 +36,7 @@ body {
 }
  
 #irssistats img {
 }
  
 #irssistats img {
-       border: 0;
+  border: 0;
 }
 
 #irssistats h1 {
 }
 
 #irssistats h1 {
@@ -56,7 +56,7 @@ body {
 }
 
 #irssitats p {
 }
 
 #irssitats p {
-       font-size: 10pt;
+  font-size: 10pt;
 }
 
 #irssistats th {
 }
 
 #irssistats th {
@@ -106,68 +106,76 @@ body {
 }
 
 #irssistats div {
 }
 
 #irssistats div {
-       margin-bottom: 20px;
-       text-align: center;
+  margin-bottom: 20px;
+  text-align: center;
 }
 
 #irssistats div.h1, #irssistats div.h2, #irssistats div.h3, #irssistats div.h4, #irssistats div.hm {
 }
 
 #irssistats div.h1, #irssistats div.h2, #irssistats div.h3, #irssistats div.h4, #irssistats div.hm {
-       float: left;
-       height: 15px;
-       margin: 0;
-       padding: 0;
+  float: left;
+  height: 15px;
+  margin: 0;
+  padding: 0;
   border: 0;
   font-size: 0;
 }
 
 #irssistats div.v1, #irssistats div.v2, #irssistats div.v3, #irssistats div.v4, #irssistats div.vm {
   border: 0;
   font-size: 0;
 }
 
 #irssistats div.v1, #irssistats div.v2, #irssistats div.v3, #irssistats div.v4, #irssistats div.vm {
-       width: 15px;
-       margin: 0;
-       padding: 0;
-       border: 0;
+  width: 15px;
+  margin: 0;
+  padding: 0;
+  border: 0;
   font-size: 0;
   font-size: 0;
-       margin: auto;
+  margin: auto;
 }
 
 #irssistats div.h1 {
 }
 
 #irssistats div.h1 {
-       background: #0000ff;
+  background: #0000ff;
   background: url('pisg_blue-h.png');
 }
 
 #irssistats div.h2 {
   background: url('pisg_blue-h.png');
 }
 
 #irssistats div.h2 {
-       background: #00ff00;
+  background: #00ff00;
   background: url('pisg_green-h.png');
 }
 
 #irssistats div.h3 {
   background: url('pisg_green-h.png');
 }
 
 #irssistats div.h3 {
-       background: #ffff00;
+  background: #ffff00;
   background: url('pisg_yellow-h.png');
 }
 
 #irssistats div.h4 {
   background: url('pisg_yellow-h.png');
 }
 
 #irssistats div.h4 {
-       background: #ff0000;
+  background: #ff0000;
   background: url('pisg_red-h.png');
 }
 
 #irssistats div.hm {
   background: url('pisg_red-h.png');
 }
 
 #irssistats div.hm {
-       background: #dd00dd;
+  background: #dd00dd;
 }
 
 #irssistats div.v1 {
 }
 
 #irssistats div.v1 {
-       background: #0000ff;
+  background: #0000ff;
   background: url('pisg_blue-v.png');
 }
 
 #irssistats div.v2 {
   background: url('pisg_blue-v.png');
 }
 
 #irssistats div.v2 {
-       background: #00ff00;
+  background: #00ff00;
   background: url('pisg_green-v.png');
 }
 
 #irssistats div.v3 {
   background: url('pisg_green-v.png');
 }
 
 #irssistats div.v3 {
-       background: #ffff00;
+  background: #ffff00;
   background: url('pisg_yellow-v.png');
 }
 
 #irssistats div.v4 {
   background: url('pisg_yellow-v.png');
 }
 
 #irssistats div.v4 {
-       background: #ff0000;
+  background: #ff0000;
   background: url('pisg_red-v.png');
   background: url('pisg_red-v.png');
+}
+
+#irssistats div.logo {
+  display: none;
+}
+
+#irssistats .tdphoto {
+  text-align: center;
 }
\ No newline at end of file
 }
\ No newline at end of file
index 6706b61..1890139 100644 (file)
@@ -5,9 +5,9 @@ body {
 }
 
 #irssistats * {
 }
 
 #irssistats * {
-       font-family: Verdana, Arial, Helvetica, sans-serif;
+  font-family: Verdana, Arial, Helvetica, sans-serif;
   color: #000000;
   color: #000000;
-       margin: 0;
+  margin: 0;
 }
 
 #irssistats A {
 }
 
 #irssistats A {
@@ -19,32 +19,32 @@ body {
 }
 
 #irssistats img {
 }
 
 #irssistats img {
-       border: 0;
+  border: 0;
 }
 
 #irssistats h1 {
 }
 
 #irssistats h1 {
-       font-size: 20pt;
+  font-size: 20pt;
   margin-bottom: 10px;
   color: #C05A00;
 }
 
 #irssistats h2 {
   margin-bottom: 10px;
   color: #C05A00;
 }
 
 #irssistats h2 {
-       font-size: 15pt;
+  font-size: 15pt;
   margin-bottom: 5px;
   color: #FF7700;
 }
 
 #irssitats p {
   margin-bottom: 5px;
   color: #FF7700;
 }
 
 #irssitats p {
-       font-size: 10pt;
+  font-size: 10pt;
 }
 
 #irssistats th {
 }
 
 #irssistats th {
-       font-size: 9pt;
+  font-size: 9pt;
   background: #FF7700;
 }
 
 #irssistats td {
   background: #FF7700;
 }
 
 #irssistats td {
-       font-size: 9pt;
+  font-size: 9pt;
   background: #FFEEEE;
 }
 
   background: #FFEEEE;
 }
 
@@ -53,7 +53,7 @@ body {
 }
 
 #irssistats small {
 }
 
 #irssistats small {
-       font-size: 7pt;
+  font-size: 7pt;
 }
 
 #irssistats table {
 }
 
 #irssistats table {
@@ -62,74 +62,86 @@ body {
 }
 
 #irssistats div {
 }
 
 #irssistats div {
-       padding: 10px;
-       margin: 10px;
-       text-align: center;
+  padding: 10px;
+  margin: 10px;
+  text-align: center;
 }
 
 #irssistats div.h1, #irssistats div.h2, #irssistats div.h3, #irssistats div.h4, #irssistats div.hm {
 }
 
 #irssistats div.h1, #irssistats div.h2, #irssistats div.h3, #irssistats div.h4, #irssistats div.hm {
-       float: left;
-       height: 15px;
-       margin: 0;
-       padding: 0;
+  float: left;
+  height: 15px;
+  margin: 0;
+  padding: 0;
   border: 0;
   font-size: 0;
 }
 
 #irssistats div.v1, #irssistats div.v2, #irssistats div.v3, #irssistats div.v4, #irssistats div.vm {
   border: 0;
   font-size: 0;
 }
 
 #irssistats div.v1, #irssistats div.v2, #irssistats div.v3, #irssistats div.v4, #irssistats div.vm {
-       width: 15px;
-       margin: 0;
-       padding: 0;
-       border: 0;
+  width: 15px;
+  margin: 0;
+  padding: 0;
+  border: 0;
   font-size: 0;
 }
 
 #irssistats div.h1 {
   font-size: 0;
 }
 
 #irssistats div.h1 {
-       background: #0000ff;
+  background: #0000ff;
   background: url('h1.png');
 }
 
 #irssistats div.h2 {
   background: url('h1.png');
 }
 
 #irssistats div.h2 {
-       background: #00ff00;
+  background: #00ff00;
   background: url('h2.png');
 }
 
 #irssistats div.h3 {
   background: url('h2.png');
 }
 
 #irssistats div.h3 {
-       background: #ffff00;
+  background: #ffff00;
   background: url('h3.png');
 }
 
 #irssistats div.h4 {
   background: url('h3.png');
 }
 
 #irssistats div.h4 {
-       background: #ff0000;
+  background: #ff0000;
   background: url('h4.png');
 }
 
 #irssistats div.hm {
   background: url('h4.png');
 }
 
 #irssistats div.hm {
-       background: #ff00ff;
+  background: #ff00ff;
   background: url('hm.png');
 }
 
 #irssistats div.v1 {
   background: url('hm.png');
 }
 
 #irssistats div.v1 {
-       background: #0000ff;
+  background: #0000ff;
   background: url('v1.png');
 }
 
 #irssistats div.v2 {
   background: url('v1.png');
 }
 
 #irssistats div.v2 {
-       background: #00ff00;
+  background: #00ff00;
   background: url('v2.png');
 }
 
 #irssistats div.v3 {
   background: url('v2.png');
 }
 
 #irssistats div.v3 {
-       background: #ffff00;
+  background: #ffff00;
   background: url('v3.png');
 }
 
 #irssistats div.v4 {
   background: url('v3.png');
 }
 
 #irssistats div.v4 {
-       background: #ff0000;
+  background: #ff0000;
   background: url('v4.png');
 }
 
 #irssistats div.vm {
   background: url('v4.png');
 }
 
 #irssistats div.vm {
-       background: #ff00ff;
+  background: #ff00ff;
   background: url('vm.png');
   background: url('vm.png');
+}
+
+#irssistats div.logo {
+  background: url('irssistats_white.png');
+  width: 364px;
+  height: 44px;
+  margin: auto;
+  padding: 0;
+}
+
+#irssistats .tdphoto {
+  text-align: center;
 }
\ No newline at end of file
 }
\ No newline at end of file
index a34612b..c809c43 100644 (file)
@@ -5,9 +5,9 @@ body {
 }
 
 #irssistats * {
 }
 
 #irssistats * {
-       font-family: Verdana, Arial, Helvetica, sans-serif;
+  font-family: Verdana, Arial, Helvetica, sans-serif;
   color: #FFFFFF;
   color: #FFFFFF;
-       margin: 0;
+  margin: 0;
 }
 
 #irssistats A {
 }
 
 #irssistats A {
@@ -19,35 +19,35 @@ body {
 }
 
 #irssistats img {
 }
 
 #irssistats img {
-       border: 0;
+  border: 0;
 }
 
 #irssistats h1 {
 }
 
 #irssistats h1 {
-       font-size: 20pt;
+  font-size: 20pt;
   margin-bottom: 10px;
   color: #0CBA18;
 }
 
 #irssistats h2 {
   margin-bottom: 10px;
   color: #0CBA18;
 }
 
 #irssistats h2 {
-       font-size: 15pt;
+  font-size: 15pt;
   margin-bottom: 5px;
   color: #84DB8C;
 }
 
 #irssitats p {
   margin-bottom: 5px;
   color: #84DB8C;
 }
 
 #irssitats p {
-       font-size: 10pt;
+  font-size: 10pt;
 }
 
 #irssistats th {
 }
 
 #irssistats th {
-       font-size: 9pt;
+  font-size: 9pt;
   background: #0B810B;
   background: #0B810B;
-       border: 1px #006600 solid;
+  border: 1px #006600 solid;
 }
 
 #irssistats td {
 }
 
 #irssistats td {
-       font-size: 9pt;
+  font-size: 9pt;
   background: #085D10;
   background: #085D10;
-       border: 1px #003300 solid;
+  border: 1px #003300 solid;
 }
 
 #irssistats td.oneline {
 }
 
 #irssistats td.oneline {
@@ -55,7 +55,7 @@ body {
 }
 
 #irssistats small {
 }
 
 #irssistats small {
-       font-size: 7pt;
+  font-size: 7pt;
 }
 
 #irssistats table {
 }
 
 #irssistats table {
@@ -64,74 +64,86 @@ body {
 }
 
 #irssistats div {
 }
 
 #irssistats div {
-       padding: 10px;
-       margin: 10px;
-       text-align: center;
+  padding: 10px;
+  margin: 10px;
+  text-align: center;
 }
 
 #irssistats div.h1, #irssistats div.h2, #irssistats div.h3, #irssistats div.h4, #irssistats div.hm {
 }
 
 #irssistats div.h1, #irssistats div.h2, #irssistats div.h3, #irssistats div.h4, #irssistats div.hm {
-       float: left;
-       height: 15px;
-       margin: 0;
-       padding: 0;
+  float: left;
+  height: 15px;
+  margin: 0;
+  padding: 0;
   border: 0;
   font-size: 0;
 }
 
 #irssistats div.v1, #irssistats div.v2, #irssistats div.v3, #irssistats div.v4, #irssistats div.vm {
   border: 0;
   font-size: 0;
 }
 
 #irssistats div.v1, #irssistats div.v2, #irssistats div.v3, #irssistats div.v4, #irssistats div.vm {
-       width: 15px;
-       margin: 0;
-       padding: 0;
-       border: 0;
+  width: 15px;
+  margin: 0;
+  padding: 0;
+  border: 0;
   font-size: 0;
 }
 
 #irssistats div.h1 {
   font-size: 0;
 }
 
 #irssistats div.h1 {
-       background: #0000ff;
+  background: #0000ff;
   background: url('h1.png');
 }
 
 #irssistats div.h2 {
   background: url('h1.png');
 }
 
 #irssistats div.h2 {
-       background: #00ff00;
+  background: #00ff00;
   background: url('h2.png');
 }
 
 #irssistats div.h3 {
   background: url('h2.png');
 }
 
 #irssistats div.h3 {
-       background: #ffff00;
+  background: #ffff00;
   background: url('h3.png');
 }
 
 #irssistats div.h4 {
   background: url('h3.png');
 }
 
 #irssistats div.h4 {
-       background: #ff0000;
+  background: #ff0000;
   background: url('h4.png');
 }
 
 #irssistats div.hm {
   background: url('h4.png');
 }
 
 #irssistats div.hm {
-       background: #ff00ff;
+  background: #ff00ff;
   background: url('hm.png');
 }
 
 #irssistats div.v1 {
   background: url('hm.png');
 }
 
 #irssistats div.v1 {
-       background: #0000ff;
+  background: #0000ff;
   background: url('v1.png');
 }
 
 #irssistats div.v2 {
   background: url('v1.png');
 }
 
 #irssistats div.v2 {
-       background: #00ff00;
+  background: #00ff00;
   background: url('v2.png');
 }
 
 #irssistats div.v3 {
   background: url('v2.png');
 }
 
 #irssistats div.v3 {
-       background: #ffff00;
+  background: #ffff00;
   background: url('v3.png');
 }
 
 #irssistats div.v4 {
   background: url('v3.png');
 }
 
 #irssistats div.v4 {
-       background: #ff0000;
+  background: #ff0000;
   background: url('v4.png');
 }
 
 #irssistats div.vm {
   background: url('v4.png');
 }
 
 #irssistats div.vm {
-       background: #ff00ff;
+  background: #ff00ff;
   background: url('vm.png');
   background: url('vm.png');
+}
+
+#irssistats div.logo {
+  background: url('irssistats_black.png');
+  width: 364px;
+  height: 44px;
+  margin: auto;
+  padding: 0;
+}
+
+#irssistats .tdphoto {
+  text-align: center;
 }
\ No newline at end of file
 }
\ No newline at end of file
diff --git a/debian/changelog b/debian/changelog
new file mode 100644 (file)
index 0000000..6183d33
--- /dev/null
@@ -0,0 +1,24 @@
+irssistats (0.70-1) unstable; urgency=low
+
+  * New upstream version.
+
+ -- Antoine Jacquet <royale@zerezo.com>  Sat,  5 Feb 2005 23:44:14 +0100
+
+irssistats (0.62-1) unstable; urgency=low
+
+  * New upstream version.
+
+ -- Antoine Jacquet <royale@zerezo.com>  Wed,  3 May 2004 22:10:45 +0100
+
+irssistats (0.61-1) unstable; urgency=low
+
+  * New upstream version.
+
+ -- Antoine Jacquet <royale@zerezo.com>  Wed,  5 Apr 2004 02:11:20 +0100
+
+irssistats (0.6-1) unstable; urgency=low
+
+  * Initial Release.
+
+ -- Antoine Jacquet <royale@zerezo.com>  Wed, 24 Mar 2004 16:44:17 +0100
+
diff --git a/debian/compat b/debian/compat
new file mode 100644 (file)
index 0000000..b8626c4
--- /dev/null
@@ -0,0 +1 @@
+4
diff --git a/debian/control b/debian/control
new file mode 100644 (file)
index 0000000..f0b9a7f
--- /dev/null
@@ -0,0 +1,15 @@
+Source: irssistats
+Section: net
+Priority: optional
+Maintainer: Antoine Jacquet <royale@zerezo.com>
+Build-Depends: debhelper (>= 4.0.0)
+Standards-Version: 3.6.1
+
+Package: irssistats
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Suggests: irssi-text
+Description: This tool generates HTML IRC stats based on irssi logs
+ irssistats is a tool that make HTML stats from irssi logfiles.
+ The statistics generated display many useful and funny informations about
+ the channel.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644 (file)
index 0000000..83cb943
--- /dev/null
@@ -0,0 +1,16 @@
+This package was debianized by Antoine Jacquet <royale@zerezo.com> on
+Wed, 24 Mar 2004 16:44:17 +0100.
+
+It was downloaded from: http://royale.zerezo.com/irssistats/
+
+Upstream Author: Antoine Jacquet <royale@zerezo.com>
+
+Copyright (C) 2002-2004  Antoine Jacquet <royale@zerezo.com>
+
+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.
+
+On Debian GNU/Linux systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL'.
diff --git a/debian/docs b/debian/docs
new file mode 100644 (file)
index 0000000..e6bf5c3
--- /dev/null
@@ -0,0 +1 @@
+README sample.nickfile sample.configfile
diff --git a/debian/rules b/debian/rules
new file mode 100755 (executable)
index 0000000..7b26878
--- /dev/null
@@ -0,0 +1,99 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# GNU copyright 1997 to 1999 by Joey Hess.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+
+
+
+CFLAGS = -Wall -g
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+       CFLAGS += -O0
+else
+       CFLAGS += -O2
+endif
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
+       INSTALL_PROGRAM += -s
+endif
+
+configure: configure-stamp
+configure-stamp:
+       dh_testdir
+       # Add here commands to configure the package.
+
+       touch configure-stamp
+
+
+build: build-stamp
+
+build-stamp: configure-stamp 
+       dh_testdir
+
+       # Add here commands to compile the package.
+       $(MAKE)
+       #/usr/bin/docbook-to-man debian/irssistats.sgml > irssistats.1
+
+       touch build-stamp
+
+clean:
+       dh_testdir
+       dh_testroot
+       rm -f build-stamp configure-stamp
+
+       # Add here commands to clean up after the build process.
+       -$(MAKE) clean
+
+       dh_clean 
+
+install: build
+       dh_testdir
+       dh_testroot
+       dh_clean -k 
+       dh_installdirs
+
+       # Add here commands to install the package into debian/irssistats.
+       $(MAKE) install PRE=$(CURDIR)/debian/irssistats/usr
+       rm $(CURDIR)/debian/irssistats/usr/share/doc/irssistats/COPYING
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+       dh_testdir
+       dh_testroot
+       dh_installchangelogs CHANGELOG
+       dh_installdocs
+       dh_installexamples
+#      dh_install
+#      dh_installmenu
+#      dh_installdebconf       
+#      dh_installlogrotate
+#      dh_installemacsen
+#      dh_installpam
+#      dh_installmime
+#      dh_installinit
+#      dh_installcron
+#      dh_installinfo
+       dh_installman
+       dh_link
+       dh_strip
+       dh_compress
+       dh_fixperms
+#      dh_perl
+#      dh_python
+#      dh_makeshlibs
+       dh_installdeb
+       dh_shlibdeps
+       dh_gencontrol
+       dh_md5sums
+       dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
index 62c138b..4416cbd 100644 (file)
@@ -1,56 +1,3 @@
-.\" $Header: /aolnet/dev/src/CVS/sgml/docbook-to-man/cmd/docbook-to-man.sh,v 1.1.1.1 1998/11/13 21:31:59 db3l Exp $
-.\"
-.\"    transcript compatibility for postscript use.
-.\"
-.\"    synopsis:  .P! <file.ps>
-.\"
-.de P!
-.fl
-\!!1 setgray
-.fl
-\\&.\"
-.fl
-\!!0 setgray
-.fl                    \" force out current output buffer
-\!!save /psv exch def currentpoint translate 0 0 moveto
-\!!/showpage{}def
-.fl                    \" prolog
-.sy sed -e 's/^/!/' \\$1\" bring in postscript file
-\!!psv restore
-.
-.de pF
-.ie     \a\\*(f1\a\a .ds f1 \\n(.f
-.el .ie \a\\*(f2\a\a .ds f2 \\n(.f
-.el .ie \a\\*(f3\a\a .ds f3 \\n(.f
-.el .ie \a\\*(f4\a\a .ds f4 \\n(.f
-.el .tm ? font overflow
-.ft \\$1
-..
-.de fP
-.ie     !\a\\*(f4\a\a \{\
-.      ft \\*(f4
-.      ds f4\"
-'      br \}
-.el .ie !\a\\*(f3\a\a \{\
-.      ft \\*(f3
-.      ds f3\"
-'      br \}
-.el .ie !\a\\*(f2\a\a \{\
-.      ft \\*(f2
-.      ds f2\"
-'      br \}
-.el .ie !\a\\*(f1\a\a \{\
-.      ft \\*(f1
-.      ds f1\"
-'      br \}
-.el .tm ? font underflow
-..
-.ds f1\"
-.ds f2\"
-.ds f3\"
-.ds f4\"
-'\" t 
-.ta 8n 16n 24n 32n 40n 48n 56n 64n 72n  
 .TH "IRSSISTATS" "1" 
 .SH "NAME" 
 irssistats \(em A tool to generate HTML IRC stats based on irssi logs. 
 .TH "IRSSISTATS" "1" 
 .SH "NAME" 
 irssistats \(em A tool to generate HTML IRC stats based on irssi logs. 
@@ -83,7 +30,7 @@ The path to the configuration file can be given on the command line : \fBirssist
 .PP 
 If no configuration file is given, irssistats looks for files ~/.irssistats.conf or then /etc/irssistats.conf 
 .PP 
 .PP 
 If no configuration file is given, irssistats looks for files ~/.irssistats.conf or then /etc/irssistats.conf 
 .PP 
-Lines starting by ; # -- or // are ignored (comments). 
+Lines starting by ; # \-\- or // are ignored (comments). 
 .PP 
 This file is read sequencially, so it acts like a script. 
 .PP 
 .PP 
 This file is read sequencially, so it acts like a script. 
 .PP 
@@ -93,7 +40,7 @@ Blank lines must not contain any spaces !
 .PP 
 Each option keeps its value until erased by another value. 
 .PP 
 .PP 
 Each option keeps its value until erased by another value. 
 .PP 
-IMPORTANT : the order of options to parse a channel must allways be "input" THEN "nickfile" THEN "output". 
+IMPORTANT : the order of options to parse a channel must allways be "input" THEN "nickfile" THEN "photofile" THEN "output". 
 .PP 
 Available options are : 
 .IP "debug" 10 
 .PP 
 Available options are : 
 .IP "debug" 10 
@@ -140,10 +87,22 @@ Specifies the refresh time in seconds (0 to disable)
 This option has no effect if you use a custom header : you'll have to include the refresh code yourself. 
 .IP "" 10 
 Default : 3600 
 This option has no effect if you use a custom header : you'll have to include the refresh code yourself. 
 .IP "" 10 
 Default : 3600 
+.IP "photo_size" 10 
+Specifies the size in pixels of the thumbnails for users 
+.IP "" 10 
+This option has an effect only if there is a photofile (see below) 
+.IP "" 10 
+Set to 0 to disable (display pictures with their real size) 
+.IP "" 10 
+Default : 60 
 .IP "w3c_link" 10 
 Set this to "no" if you don't want the W3C logo. 
 .IP "" 10 
 Default : yes 
 .IP "w3c_link" 10 
 Set this to "no" if you don't want the W3C logo. 
 .IP "" 10 
 Default : yes 
+.IP "logo" 10 
+Set this to "no" if you don't want the irssistats logo. 
+.IP "" 10 
+Default : yes 
 .IP "header" 10 
 Use your custom header file (HTML code between <!DOCTYPE... and <body> included) 
 .IP "footer" 10 
 .IP "header" 10 
 Use your custom header file (HTML code between <!DOCTYPE... and <body> included) 
 .IP "footer" 10 
@@ -156,6 +115,8 @@ Note that irssistats will really parse the file as soon as it reads this option.
 This allow you to group nick using a nickfile. 
 .IP "" 10 
 Note that irssistats will really merge the nicks as soon as it reads this option. 
 This allow you to group nick using a nickfile. 
 .IP "" 10 
 Note that irssistats will really merge the nicks as soon as it reads this option. 
+.IP "photofile" 10 
+This allow you to display pictures for users. 
 .IP "output" 10 
 This allow you to generate the HTML file. 
 .IP "" 10 
 .IP "output" 10 
 This allow you to generate the HTML file. 
 .IP "" 10 
@@ -181,6 +142,21 @@ The nickfile must not contain any comments.
 The <NULL> final nick will remove matching nicks from all statistics, except from "Some URLs" and "Some topics"... 
 .PP 
 You can also take a look at the "sample.nickfile" in this package (in "/usr/share/doc/irssistats/"). 
 The <NULL> final nick will remove matching nicks from all statistics, except from "Some URLs" and "Some topics"... 
 .PP 
 You can also take a look at the "sample.nickfile" in this package (in "/usr/share/doc/irssistats/"). 
+.SH "PHOTOFILE" 
+.PP 
+Since version 0.70 of \fBirssistats\fR, you can use a photofile to display pictures for users. 
+.PP 
+Each line of the photofile contains the final nick and an URL for the image. 
+.PP 
+Examples : 
+.IP "royale http://royale.zerezo.com/chat/faces/happy40.png" 10 
+(a full address) 
+.IP "sektor ../chat/faces/happy40.png" 10 
+(a relative address) 
+.PP 
+The photofile must not contain any comments. 
+.PP 
+You can also take a look at the "sample.photofile" in this package (in "/usr/share/doc/irssistats/"). 
 .SH "SEE ALSO" 
 .PP 
 \fBirssi\fR (1). 
 .SH "SEE ALSO" 
 .PP 
 \fBirssi\fR (1). 
@@ -192,4 +168,4 @@ Report bugs to royale@zerezo.com.
 .SH "AUTHOR" 
 .PP 
 Antoine Jacquet royale@zerezo.com 
 .SH "AUTHOR" 
 .PP 
 Antoine Jacquet royale@zerezo.com 
-.\" created by instant / docbook-to-man, Mon 03 May 2004, 21:30 
+.\" created by instant / docbook-to-man, Sun 06 Feb 2005, 06:38 
index d7e974d..4e637a5 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
- * irssistats version 0.62
+ * irssistats version 0.70
  *
  * This tool generates IRC stats based on irssi logs.
  * Usage: irssistats [/path/to/file.conf]
  *
  * This tool generates IRC stats based on irssi logs.
  * Usage: irssistats [/path/to/file.conf]
@@ -20,7 +20,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-*/
+ */
 
 
 #include <sys/types.h>
 
 
 #include <sys/types.h>
 #include <stdlib.h>
 #include <time.h>
 #include <string.h>
 #include <stdlib.h>
 #include <time.h>
 #include <string.h>
+#ifdef __WIN32__
+#define GLOBALCONF "irssistats.conf"
+#else
+#define GLOBALCONF "/etc/irssistats.conf"
 #include <regex.h>
 #include <regex.h>
+#endif
 
 /* Config */
 #define BASEUSERS 1000
 
 /* Config */
 #define BASEUSERS 1000
@@ -43,7 +48,7 @@
 #define MINWORDLENGTH 5
 
 /* irssistats */
 #define MINWORDLENGTH 5
 
 /* irssistats */
-#define VERSION "0.62"
+#define VERSION "0.70"
 #define URL "http://royale.zerezo.com/irssistats/"
 
 /* Counters */
 #define URL "http://royale.zerezo.com/irssistats/"
 
 /* Counters */
@@ -412,6 +417,7 @@ char *keys[NBLANGUAGES][NBKEYS+1][2]= /* first key used for language name and ab
   },
   { /* Dutch language */
     /* contributed by Jeroen Ubbink <crasp@blackbyte.nl> */
   },
   { /* Dutch language */
     /* contributed by Jeroen Ubbink <crasp@blackbyte.nl> */
+    /* updated by Wouter Horré <wouter@ligezin.be> */
     { "Dutch",        "nl" },
     { "CHARSET",      "ISO-8859-1" },
     { "HEADER",       "Statistieken voor %s door %s" },
     { "Dutch",        "nl" },
     { "CHARSET",      "ISO-8859-1" },
     { "HEADER",       "Statistieken voor %s door %s" },
@@ -419,7 +425,7 @@ char *keys[NBLANGUAGES][NBKEYS+1][2]= /* first key used for language name and ab
     { "LASTDAYS",     "Statistieken van de laatste dagen" },
     { "TOPHOURS",     "Statistieken per uur" },
     { "TOPUSERS",     "Meest actieve mensen" },
     { "LASTDAYS",     "Statistieken van de laatste dagen" },
     { "TOPHOURS",     "Statistieken per uur" },
     { "TOPUSERS",     "Meest actieve mensen" },
-    { "OTHERS",       "Er zijn nog %d niet in de top..." },
+    { "OTHERS",       "Er zijn nog %d mensen die de top niet haalden..." },
     { "NBLINES",      "regels" },
     { "NICK",         "nick" },
     { "AVGLETTERS",   "letters/lijn" },
     { "NBLINES",      "regels" },
     { "NICK",         "nick" },
     { "AVGLETTERS",   "letters/lijn" },
@@ -438,7 +444,7 @@ char *keys[NBLANGUAGES][NBKEYS+1][2]= /* first key used for language name and ab
     { "BIGNUMBERS",   "Enkele grote aantallen..." },
     { "NUMBERS",      "numbers" },
     { "TIME",         "%d regels (%d dagen) verwerkt in %d seconden" },
     { "BIGNUMBERS",   "Enkele grote aantallen..." },
     { "NUMBERS",      "numbers" },
     { "TIME",         "%d regels (%d dagen) verwerkt in %d seconden" },
-    { "FOOTER",       "Statistieken gegenereert door" },
+    { "FOOTER",       "Statistieken gegenereerd door" },
     { "C_SMILE",      "is vaak vrolijk :)" },
     { "C_FROWN",      "is vaak droevig :(" },
     { "C_EXCLAM",     "schreeuwt veel !" },
     { "C_SMILE",      "is vaak vrolijk :)" },
     { "C_FROWN",      "is vaak droevig :(" },
     { "C_EXCLAM",     "schreeuwt veel !" },
@@ -556,9 +562,10 @@ char *L(char *key)
 int debug=1; /* 0 = none ; 1 = normal ; 2 = verbose */
 char channel[MAXLINELENGTH]="set_channel_in_config_file";
 char maintainer[MAXLINELENGTH]="set_maintainer_in_config_file";
 int debug=1; /* 0 = none ; 1 = normal ; 2 = verbose */
 char channel[MAXLINELENGTH]="set_channel_in_config_file";
 char maintainer[MAXLINELENGTH]="set_maintainer_in_config_file";
-char theme[MAXLINELENGTH]="default,blue,dark,grayscale,namour,pisg,zeduel,zerezo";
+char theme[MAXLINELENGTH]="default,biseau,blue,dark,damier,grayscale,namour,niflheim,pisg,zeduel,zerezo";
 int refresh_time=0; /* 0 = disabled */
 int w3c_link=1; /* 0 = disabled */
 int refresh_time=0; /* 0 = disabled */
 int w3c_link=1; /* 0 = disabled */
+int logo=1; /* 0 = disabled */
 char header[MAXLINELENGTH]="none";
 char footer[MAXLINELENGTH]="none";
 int totallines=0;
 char header[MAXLINELENGTH]="none";
 char footer[MAXLINELENGTH]="none";
 int totallines=0;
@@ -566,6 +573,7 @@ time_t debut;
 int top_words=1; /* 0 = disabled */
 int ranking=0; /* 0 = lines ; 1 = words ; 2 = letters */
 int quarter=0; /* 1 = enabled */
 int top_words=1; /* 0 = disabled */
 int ranking=0; /* 0 = lines ; 1 = words ; 2 = letters */
 int quarter=0; /* 1 = enabled */
+int photo_size=60;
 
 struct user
 {
 
 struct user
 {
@@ -576,6 +584,7 @@ struct user
   int hours[4];
   char quote[MAXQUOTELENGTH+1];
   int counters[NBCOUNTERS];
   int hours[4];
   char quote[MAXQUOTELENGTH+1];
   int counters[NBCOUNTERS];
+  char *photo;
   int temp;
 } *users;
 int nbusers=0;
   int temp;
 } *users;
 int nbusers=0;
@@ -729,6 +738,7 @@ int dichotomic(char *nick)
       strcpy(users[i].quote,users[i-1].quote);
       for (j=0;j<NBCOUNTERS;j++) users[i].counters[j]=users[i-1].counters[j];
       users[i].temp=users[i-1].temp;
       strcpy(users[i].quote,users[i-1].quote);
       for (j=0;j<NBCOUNTERS;j++) users[i].counters[j]=users[i-1].counters[j];
       users[i].temp=users[i-1].temp;
+      users[i].photo=users[i-1].photo;
     }
     strcpy(users[start].nick,nick);
     users[start].lines=0;
     }
     strcpy(users[start].nick,nick);
     users[start].lines=0;
@@ -738,6 +748,7 @@ int dichotomic(char *nick)
     users[start].quote[0]='\0';
     for (j=0;j<NBCOUNTERS;j++) users[start].counters[j]=0;
     users[start].temp=0;
     users[start].quote[0]='\0';
     for (j=0;j<NBCOUNTERS;j++) users[start].counters[j]=0;
     users[start].temp=0;
+    users[start].photo=NULL;
   }
   return(start);
 }
   }
   return(start);
 }
@@ -758,8 +769,19 @@ void parse_log(char *logfile)
   while (fgets(line,MAXLINELENGTH,fic)!=NULL)
   {
     /* remove \n */
   while (fgets(line,MAXLINELENGTH,fic)!=NULL)
   {
     /* remove \n */
-    for (i=0;line[i]!=0;i++);
-    if (i>=MAXLINELENGTH-1) { fprintf(stderr,"line %d is too long\n",totallines); exit(1); }
+    for (i=0;line[i]!=0 && i<MAXLINELENGTH-1;i++);
+    if (i>=MAXLINELENGTH-1) { 
+      if(debug){
+        fprintf(stderr,"line %d is too long, skipping\n",totallines+1); 
+      }
+      continue; 
+    }
+    if (i<8) {
+      if(debug) {
+        fprintf(stderr, "line %d is too short to be valid, skipping\n",totallines+1);
+      }
+      continue;
+    }
     line[i-1]='\0';
     pos=0;
     totallines++;
     line[i-1]='\0';
     pos=0;
     totallines++;
@@ -783,7 +805,13 @@ void parse_log(char *logfile)
     }
     else if (strncmp("-!-",&line[6],3)==0) /* 00:00 -!- Nick something... */
     {
     }
     else if (strncmp("-!-",&line[6],3)==0) /* 00:00 -!- Nick something... */
     {
-      for (i=10;line[i]!=' ';i++);
+      for (i=10;line[i]!=' ' && i <= 10 + MAXNICKLENGTH;i++);
+      if(i > 10 + MAXNICKLENGTH) {
+        if(debug) {
+          fprintf(stderr,"nick on line %d is too long, skipping line\n",totallines); 
+        }
+        continue;
+      }
       line[i]='\0';
       nick=&line[10];
       message=&line[i+1];
       line[i]='\0';
       nick=&line[10];
       message=&line[i+1];
@@ -828,14 +856,26 @@ void parse_log(char *logfile)
       hour=atoi(line);
       if (line[7]=='*') /* 00:00  * Nick the message */
       {
       hour=atoi(line);
       if (line[7]=='*') /* 00:00  * Nick the message */
       {
-        for (i=9;line[i]!=' ';i++);
+        for (i=9;line[i]!=' ' && i <= 9 + MAXNICKLENGTH;i++);
+        if(i > 9 + MAXNICKLENGTH) {
+          if(debug) {
+            fprintf(stderr,"nick on line %d is too long, skipping line\n",totallines); 
+          }
+          continue; 
+        }
         nick=&line[9];
         message=&line[i+1];
       }
       else if (line[7]=='>') /* 00:00 <>>>?Nick<<<> the personal message */
                              /* 00:00 <>>?Nick<<> the personal message */
       {
         nick=&line[9];
         message=&line[i+1];
       }
       else if (line[7]=='>') /* 00:00 <>>>?Nick<<<> the personal message */
                              /* 00:00 <>>?Nick<<> the personal message */
       {
-        for (i=10;line[i]!='<';i++);
+        for (i=10;line[i]!='<' && i <= 10 + MAXNICKLENGTH;i++);
+         if(i > 10 + MAXNICKLENGTH) { 
+          if(debug) {
+            fprintf(stderr,"nick on line %d is too long, skipping line\n",totallines); 
+          }
+          continue; 
+        }
         nick=&line[10];
         if (line[9]=='>') nick++;
         message=&line[i+5];
         nick=&line[10];
         if (line[9]=='>') nick++;
         message=&line[i+5];
@@ -853,7 +893,13 @@ void parse_log(char *logfile)
             nickstart = 7;
         }
           
             nickstart = 7;
         }
           
-        for (i=nickstart;line[i]!='>';i++);
+        for (i=nickstart;line[i]!='>' && i <= nickstart + MAXNICKLENGTH;i++);
+        if(i > nickstart + MAXNICKLENGTH) { 
+          if(debug) {
+            fprintf(stderr,"nick on line %d is too long, skipping line\n",totallines); 
+          }
+          continue; 
+        }
         nick=&line[nickstart];
         message=&line[i+2];
       }
         nick=&line[nickstart];
         message=&line[i+2];
       }
@@ -913,6 +959,7 @@ void parse_log(char *logfile)
   if (debug) printf(" done\n");
 }
 
   if (debug) printf(" done\n");
 }
 
+#ifndef __WIN32__
 void parse_nick(char *nickfile)
 {
   FILE *fic;
 void parse_nick(char *nickfile)
 {
   FILE *fic;
@@ -958,6 +1005,24 @@ void parse_nick(char *nickfile)
   for (j=0;j<4;j++) users[i].hours[j]=-1;
   for (j=0;j<NBCOUNTERS;j++) users[i].counters[j]=-1;
 }
   for (j=0;j<4;j++) users[i].hours[j]=-1;
   for (j=0;j<NBCOUNTERS;j++) users[i].counters[j]=-1;
 }
+#endif
+
+void parse_photo(char *photofile)
+{
+  FILE *fic;
+  char line[MAXLINELENGTH];
+  int user;
+  
+  if ((fic=fopen(photofile,"rt"))==NULL) { fprintf(stderr,"can't open photo file \"%s\"\n",photofile); exit(1); }
+  while (fscanf(fic,"%s",line)==1)
+  {
+    user=dichotomic(line);
+    fscanf(fic,"%s",line);
+    users[user].photo=malloc(strlen(line)+1);
+    strcpy(users[user].photo,line);
+  }
+  fclose(fic);
+}
 
 void gen_xhtml(char *xhtmlfile)
 {
 
 void gen_xhtml(char *xhtmlfile)
 {
@@ -967,6 +1032,9 @@ void gen_xhtml(char *xhtmlfile)
   int user,max,temp;
   char line[MAXLINELENGTH];
   char *subtheme;
   int user,max,temp;
   char line[MAXLINELENGTH];
   char *subtheme;
+  int photos=0;
+  
+  for (i=0;i<nbusers;i++) if (users[i].photo!=NULL) photos=1;
   
   if ((fic=fopen(xhtmlfile,"wt"))==NULL) { fprintf(stderr,"can't open xhtml file \"%s\"\n",xhtmlfile); exit(1); }
   
   
   if ((fic=fopen(xhtmlfile,"wt"))==NULL) { fprintf(stderr,"can't open xhtml file \"%s\"\n",xhtmlfile); exit(1); }
   
@@ -1044,13 +1112,15 @@ void gen_xhtml(char *xhtmlfile)
   switch (ranking)
   {
     case 0:
   switch (ranking)
   {
     case 0:
-      fprintf(fic,"<table>\n<tr><th></th><th>%s</th><th>%s</th><th>%s</th><th colspan=\"2\">%s</th><th>%s</th></tr>\n",L("NICK"),L("NBLINES"),L("HOURS"),L("AVGLETTERS"),L("QUOTE"));
+      fprintf(fic,"<table>\n<tr><th></th><th>%s</th><th>%s</th><th>%s</th><th colspan=\"2\">%s</th><th>%s</th>\n",L("NICK"),L("NBLINES"),L("HOURS"),L("AVGLETTERS"),L("QUOTE"));
       break;
     default:
       /* "letters" and "words" ranking are not yet translated so we use the generic word "rank" ... */
       break;
     default:
       /* "letters" and "words" ranking are not yet translated so we use the generic word "rank" ... */
-      fprintf(fic,"<table>\n<tr><th></th><th>%s</th><th>%s</th><th>%s</th><th colspan=\"2\">%s</th><th>%s</th></tr>\n",L("NICK"),"rank",L("HOURS"),L("AVGLETTERS"),L("QUOTE"));
+      fprintf(fic,"<table>\n<tr><th></th><th>%s</th><th>%s</th><th>%s</th><th colspan=\"2\">%s</th><th>%s</th>\n",L("NICK"),"rank",L("HOURS"),L("AVGLETTERS"),L("QUOTE"));
       break;
   }
       break;
   }
+  if (photos) fprintf(fic,"<th></th>");
+  fprintf(fic,"</tr>");
   for (i=1;i<=NBUSERS;i++)
   {
     user=-1;
   for (i=1;i<=NBUSERS;i++)
   {
     user=-1;
@@ -1084,7 +1154,15 @@ void gen_xhtml(char *xhtmlfile)
       for (j=0;j<4;j++) if (users[user].hours[j]!=0) fprintf(fic,"<div class=\"h%d\" style=\"width:%dpx\"></div>",j+1,100*users[user].hours[j]/users[user].lines);
       fprintf(fic,"</td><td>%d</td><td><div class=\"hm\" style=\"width:%dpx\"></div></td><td>\"",users[user].lines!=0?users[user].letters/users[user].lines:0,users[user].lines!=0?users[user].letters/users[user].lines:0);
       printhtml(fic,users[user].quote);
       for (j=0;j<4;j++) if (users[user].hours[j]!=0) fprintf(fic,"<div class=\"h%d\" style=\"width:%dpx\"></div>",j+1,100*users[user].hours[j]/users[user].lines);
       fprintf(fic,"</td><td>%d</td><td><div class=\"hm\" style=\"width:%dpx\"></div></td><td>\"",users[user].lines!=0?users[user].letters/users[user].lines:0,users[user].lines!=0?users[user].letters/users[user].lines:0);
       printhtml(fic,users[user].quote);
-      fprintf(fic,"\"</td></tr>\n");
+      fprintf(fic,"\"</td>");
+      if (photos && users[user].photo!=NULL)
+      {
+        if (photo_size)
+          fprintf(fic,"<td class=\"tdphoto\"><a href=\"%s\"><img src=\"%s\" class=\"imgphoto\" width=\"%d\" height=\"%d\" alt=\"\" style=\"border: 0\" /></a></td>",users[user].photo,users[user].photo,photo_size,photo_size);
+        else
+          fprintf(fic,"<td class=\"tdphoto\"><img src=\"%s\" class=\"imgphoto\" alt=\"\" /></td>",users[user].photo,users[user].photo);
+      }
+      fprintf(fic,"</tr>\n");
       users[user].lines=-1;
       users[user].words=-1;
       users[user].letters=-1;
       users[user].lines=-1;
       users[user].words=-1;
       users[user].letters=-1;
@@ -1180,10 +1258,15 @@ void gen_xhtml(char *xhtmlfile)
     fprintf(fic,"<p>\n<a href=\"http://validator.w3.org/check/referer\"><img src=\"valid-xhtml10.png\" height=\"31\" width=\"88\" alt=\"Valid XHTML 1.0!\" /></a>\n");
     fprintf(fic,"<a href=\"http://jigsaw.w3.org/css-validator/check/referer\"><img src=\"valid-css.png\" height=\"31\" width=\"88\" alt=\"Valid CSS!\" /></a>\n</p>\n");
   }
     fprintf(fic,"<p>\n<a href=\"http://validator.w3.org/check/referer\"><img src=\"valid-xhtml10.png\" height=\"31\" width=\"88\" alt=\"Valid XHTML 1.0!\" /></a>\n");
     fprintf(fic,"<a href=\"http://jigsaw.w3.org/css-validator/check/referer\"><img src=\"valid-css.png\" height=\"31\" width=\"88\" alt=\"Valid CSS!\" /></a>\n</p>\n");
   }
-  fprintf(fic,"</div>\n\n</div>");
-  if (strcmp("none",header)==0)
+  fprintf(fic,"</div>\n\n");
+  
+  /* logo*/
+  if (logo) fprintf(fic,"<div class=\"logo\"></div>\n\n");
+  
+  /* end */
+  if (strcmp("none",footer)==0)
   {
   {
-    fprintf(fic,"\n\n</body>\n\n</html>\n");
+    fprintf(fic,"</div>\n\n</body>\n\n</html>\n");
   }
   else
   {
   }
   else
   {
@@ -1197,6 +1280,17 @@ void gen_xhtml(char *xhtmlfile)
 
 void parse_config(char *configfile)
 {
 
 void parse_config(char *configfile)
 {
+  void expand(char *path)
+  {
+    char temp[MAXLINELENGTH];
+    if (*path=='~')
+    {
+      snprintf(temp,MAXLINELENGTH-1,"%s%s",getenv("HOME"),path+1);
+      temp[MAXLINELENGTH-1]='\0';
+      strcpy(path,temp);
+    }
+  }
+  
   FILE *fic;
   char line[MAXLINELENGTH];
   char keyword[MAXLINELENGTH];
   FILE *fic;
   char line[MAXLINELENGTH];
   char keyword[MAXLINELENGTH];
@@ -1214,11 +1308,12 @@ void parse_config(char *configfile)
   }
   else
   {
   }
   else
   {
-    sprintf(line,"%s/.irssistats",getenv("HOME"));
+    snprintf(line,MAXLINELENGTH-1,"%s/.irssistats",getenv("HOME"));
+    line[MAXLINELENGTH-1]='\0';
     if ((fic=fopen(line,"rt"))==NULL)
     if ((fic=fopen(line,"rt"))==NULL)
-      if ((fic=fopen("/etc/irssistats.conf","rt"))==NULL)
+      if ((fic=fopen(GLOBALCONF,"rt"))==NULL)
       {
       {
-        fprintf(stderr,"can't find config file : \"%s\" nor \"/etc/irssistats.conf\"\n",line);
+        fprintf(stderr,"can't find config file : \"%s\" nor \"" GLOBALCONF "\"\n",line);
         fprintf(stderr,"please give the path to the config file in argument\n");
         exit(1);
       }
         fprintf(stderr,"please give the path to the config file in argument\n");
         exit(1);
       }
@@ -1284,6 +1379,13 @@ void parse_config(char *configfile)
       }
       else
       
       }
       else
       
+      if (strcmp("photo_size",keyword)==0)
+      {
+        photo_size=atoi(value);
+        if (debug==2) fprintf(stderr,"setting photo_size to \"%d\"\n",photo_size);
+      }
+      else
+      
       if (strcmp("w3c_link",keyword)==0)
       {
         if (debug==2) fprintf(stderr,"setting w3c_link to \"%s\"\n",value);
       if (strcmp("w3c_link",keyword)==0)
       {
         if (debug==2) fprintf(stderr,"setting w3c_link to \"%s\"\n",value);
@@ -1293,8 +1395,18 @@ void parse_config(char *configfile)
       }
       else
       
       }
       else
       
+      if (strcmp("logo",keyword)==0)
+      {
+        if (debug==2) fprintf(stderr,"setting logo to \"%s\"\n",value);
+        if (strcmp("no",value)==0) logo=0;
+        else if (strcmp("yes",value)==0) logo=1;
+        else { fprintf(stderr,"unknown value for \"logo\" option, must be \"yes\" or \"no\"\n"); exit(1); }
+      }
+      else
+      
       if (strcmp("header",keyword)==0)
       {
       if (strcmp("header",keyword)==0)
       {
+        expand(value);
         if (debug==2) fprintf(stderr,"setting header to \"%s\"\n",value);
         strcpy(header,value);
       }
         if (debug==2) fprintf(stderr,"setting header to \"%s\"\n",value);
         strcpy(header,value);
       }
@@ -1302,6 +1414,7 @@ void parse_config(char *configfile)
       
       if (strcmp("footer",keyword)==0)
       {
       
       if (strcmp("footer",keyword)==0)
       {
+        expand(value);
         if (debug==2) fprintf(stderr,"setting footer to \"%s\"\n",value);
         strcpy(footer,value);
       }
         if (debug==2) fprintf(stderr,"setting footer to \"%s\"\n",value);
         strcpy(footer,value);
       }
@@ -1309,6 +1422,7 @@ void parse_config(char *configfile)
       
       if (strcmp("input",keyword)==0)
       {
       
       if (strcmp("input",keyword)==0)
       {
+        expand(value);
         if (debug==2) fprintf(stderr,"parsing log file \"%s\"\n",value);
         parse_log(value);
       }
         if (debug==2) fprintf(stderr,"parsing log file \"%s\"\n",value);
         parse_log(value);
       }
@@ -1316,13 +1430,27 @@ void parse_config(char *configfile)
       
       if (strcmp("nickfile",keyword)==0)
       {
       
       if (strcmp("nickfile",keyword)==0)
       {
+        expand(value);
         if (debug==2) fprintf(stderr,"nick alias using file \"%s\"\n",value);
         if (debug==2) fprintf(stderr,"nick alias using file \"%s\"\n",value);
+#ifdef __WIN32__
+        fprintf(stderr,"no support for nickfile in WIN32 version\n");
+#else
         parse_nick(value);
         parse_nick(value);
+#endif
+      }
+      else
+      
+      if (strcmp("photofile",keyword)==0)
+      {
+        expand(value);
+        if (debug==2) fprintf(stderr,"parsing photo file \"%s\"\n",value);
+        parse_photo(value);
       }
       else
       
       if (strcmp("output",keyword)==0)
       {
       }
       else
       
       if (strcmp("output",keyword)==0)
       {
+        expand(value);
         if (debug==2) fprintf(stderr,"generating xhtml file \"%s\"\n",value);
         bestwords(words,0);
         gen_xhtml(value);
         if (debug==2) fprintf(stderr,"generating xhtml file \"%s\"\n",value);
         bestwords(words,0);
         gen_xhtml(value);
@@ -1338,6 +1466,11 @@ void parse_config(char *configfile)
         for (i=0;i<NBWORDS;i++) topwords[i].nb=0;
         totallines=0;
         debut=time(NULL);
         for (i=0;i<NBWORDS;i++) topwords[i].nb=0;
         totallines=0;
         debut=time(NULL);
+        for (i=0;i<nbusers;i++)
+        {
+          free(users[i].photo);
+          users[i].photo=NULL;
+        }
       }
       else
       
       }
       else
       
index cb32ace..e9f5fec 100644 (file)
@@ -78,7 +78,7 @@
     <para>Each option keyword is case sensitive, and you must put separators around the ':' character.</para>
     <para>Blank lines must not contain any spaces !</para>
     <para>Each option keeps its value until erased by another value.</para>
     <para>Each option keyword is case sensitive, and you must put separators around the ':' character.</para>
     <para>Blank lines must not contain any spaces !</para>
     <para>Each option keeps its value until erased by another value.</para>
-    <para>IMPORTANT : the order of options to parse a channel must allways be "input" THEN "nickfile" THEN "output".</para>
+    <para>IMPORTANT : the order of options to parse a channel must allways be "input" THEN "nickfile" THEN "photofile" THEN "output".</para>
     
     <para>Available options are :</para>
     
     
     <para>Available options are :</para>
     
         </listitem>
       </varlistentry>
       
         </listitem>
       </varlistentry>
       
+      <varlistentry>
+        <term>photo_size</term>
+        <listitem>
+          <para>Specifies the size in pixels of the thumbnails for users</para>
+          <para>This option has an effect only if there is a photofile (see below)</para>
+          <para>Set to 0 to disable (display pictures with their real size)</para>
+          <para>Default : 60</para>
+        </listitem>
+      </varlistentry>
+      
       <varlistentry>
         <term>w3c_link</term>
         <listitem>
       <varlistentry>
         <term>w3c_link</term>
         <listitem>
         </listitem>
       </varlistentry>
       
         </listitem>
       </varlistentry>
       
+      <varlistentry>
+        <term>logo</term>
+        <listitem>
+          <para>Set this to "no" if you don't want the irssistats logo.</para>
+          <para>Default : yes</para>
+        </listitem>
+      </varlistentry>
+      
       <varlistentry>
         <term>header</term>
         <listitem><para>Use your custom header file (HTML code between &lt;!DOCTYPE... and &lt;body&gt; included)</para></listitem>
       <varlistentry>
         <term>header</term>
         <listitem><para>Use your custom header file (HTML code between &lt;!DOCTYPE... and &lt;body&gt; included)</para></listitem>
         </listitem>
       </varlistentry>
       
         </listitem>
       </varlistentry>
       
+      <varlistentry>
+        <term>photofile</term>
+        <listitem>
+          <para>This allow you to display pictures for users.</para>
+        </listitem>
+      </varlistentry>
+      
       <varlistentry>
         <term>output</term>
         <listitem>
       <varlistentry>
         <term>output</term>
         <listitem>
   </refsect1>
   
   
   </refsect1>
   
   
+  <refsect1>
+    <title>PHOTOFILE</title>
+    <para>Since version 0.70 of <command>irssistats</command>, you can use a photofile to display pictures for users.</para>
+    <para>Each line of the photofile contains the final nick and an URL for the image.</para>
+    <para>Examples :</para>
+    <variablelist>
+      <varlistentry>
+        <term>royale http://royale.zerezo.com/chat/faces/happy40.png</term>
+        <listitem><para>(a full address)</para></listitem>
+      </varlistentry>
+      <varlistentry>
+        <term>sektor ../chat/faces/happy40.png</term>
+        <listitem><para>(a relative address)</para></listitem>
+      </varlistentry>
+    </variablelist>
+    <para>The photofile must not contain any comments.</para>
+    <para>You can also take a look at the "sample.photofile" in this package (in "/usr/share/doc/irssistats/").</para>
+  </refsect1>
+  
+  
   <refsect1>
     <title>SEE ALSO</title>
     <para><command>irssi</command> (1).</para>
   <refsect1>
     <title>SEE ALSO</title>
     <para><command>irssi</command> (1).</para>
diff --git a/rpm/irssistats.spec b/rpm/irssistats.spec
new file mode 100644 (file)
index 0000000..a5ab832
--- /dev/null
@@ -0,0 +1,31 @@
+Name: irssistats
+Summary: This tool generates HTML IRC stats based on irssi logs
+Version: 0.70
+Release: 1
+Source: http://royale.zerezo.com/%{name}/%{name}-%{version}.tar.gz
+Group: Applications/Multimedia 
+License: GPL
+BuildRoot: %{_tmppath}/%{name}-%{version}-root
+
+%description
+irssistats is a tool that make HTML stats from irssi logfiles.
+The statistics generated display many useful and funny informations about
+the channel.
+
+%prep 
+%setup -q
+
+%build 
+make
+
+%install 
+make install PRE=$RPM_BUILD_ROOT/usr
+
+%clean 
+rm -rf $RPM_BUILD_ROOT 
+
+%files 
+%defattr(-,root,root,0755) 
+%doc COPYING README
+%{_bindir}/irssistats
+%{_mandir}/man1/irssistats.1.gz
index 10786db..d738852 100644 (file)
@@ -6,7 +6,7 @@
 # Each option keyword is case sensitive, and you must put separators around the ':' character.
 # Blank lines must not contain any spaces !
 # Each option keeps its value until erased by another value.
 # Each option keyword is case sensitive, and you must put separators around the ':' character.
 # Blank lines must not contain any spaces !
 # Each option keeps its value until erased by another value.
-# IMPORTANT : the order of options to parse a channel must allways be "input" THEN "nickfile" THEN "output".
+# IMPORTANT : the order of options to parse a channel must allways be "input" THEN "nickfile" THEN "photofile" THEN "output".
 
 # Allows you to display debugging informations.
 # Values : normal / verbose / none
 
 # Allows you to display debugging informations.
 # Values : normal / verbose / none
@@ -28,7 +28,7 @@ language : fr
 # In fact this is the name of the CSS file to include.
 # This option has no effect if you use a custom header : you'll have to include the CSS yourself.
 # The first theme is the primary stylesheet, and the others are alternate themes
 # In fact this is the name of the CSS file to include.
 # This option has no effect if you use a custom header : you'll have to include the CSS yourself.
 # The first theme is the primary stylesheet, and the others are alternate themes
-theme : default,blue,dark,grayscale,namour,pisg,zeduel,zerezo
+theme : default,biseau,blue,dark,damier,grayscale,namour,niflheim,pisg,zeduel,zerezo
 
 # Allows you to disable top words list which is using a lot of memory
 # Default : yes
 
 # Allows you to disable top words list which is using a lot of memory
 # Default : yes
@@ -48,10 +48,20 @@ quarter : yes
 # Default : 3600
 refresh_time : 0
 
 # Default : 3600
 refresh_time : 0
 
+# Specifies the size in pixels of the thumbnails for users
+# This option has an effect only if there is a photofile (see below)
+# Set to 0 to disable (display pictures with their real size)
+# Default : 60
+photo_size : 0
+
 # Set this to "no" if you don't want the W3C logo.
 # Default : yes
 w3c_link : no
 
 # Set this to "no" if you don't want the W3C logo.
 # Default : yes
 w3c_link : no
 
+# Set this to "no" if you don't want the irssistats logo.
+# Default : yes
+logo : no
+
 # Use your custom header file (HTML code between <!DOCTYPE... and <body> included)
 header : /path/to/header.html
 
 # Use your custom header file (HTML code between <!DOCTYPE... and <body> included)
 header : /path/to/header.html
 
@@ -71,6 +81,9 @@ input : /path/to/#newchannel1.log
 # Note that irssistats will really merge the nicks as soon as it reads this option.
 nickfile : /path/to/nickfile1.txt
 
 # Note that irssistats will really merge the nicks as soon as it reads this option.
 nickfile : /path/to/nickfile1.txt
 
+# This allow you to display pictures for users.
+photofile: /path/to/photofile1.txt
+
 # This allow you to generate the HTML file.
 # Note that irssistats will really generate the HTML file as soon as it reads this option.
 output : /path/to/channel1.html
 # This allow you to generate the HTML file.
 # Note that irssistats will really generate the HTML file as soon as it reads this option.
 output : /path/to/channel1.html
diff --git a/sample.photofile b/sample.photofile
new file mode 100644 (file)
index 0000000..0d30a31
--- /dev/null
@@ -0,0 +1,4 @@
+royale  http://royale.zerezo.com/chat/faces/happy40.png
+sektor  ../chat/faces/sektor.jpg
+Clak    wgfa2.png
+Jo      faces/FLCL.gif