SFV Builder for Windows 95/98/NT/2k
[ formerly loved by those who had it and hated by those who didn´t, ]
[ also known as HoopySFV ]
Public Domain, Release Version 1.00
Full Delphi 5 Source included
Linux/Unix version also available
Some notes in advance:
I know almost no one reads dox. Especially not those made for click&error
winblowze tools. Reading this file will give you some background info on
the program and its history, not actually how to use it. Skip this text
if you think you´re already lame enough. Read on otherwise :)
About the layout of the program:
Actually three people were doing graphics and layouting for this tool.
My betatesting crew is a nice bunch of very different people. None of the
three different layouts and graphics we´ve tried during the past weeks
has pleased all of them. The one that comes with this release is the
newest one and was appreciated by most in my beta crew though for someone
it is the worst of all. I wouldn´t be surprised if all of them overlooked
some serious bugs just because everyone was just discussing about the
layout. Actually the release has been postponed for more than three weeks
because some people demanded a redesign. If you like the proggie´s layout
good for you. If you don´t, feel free to change it. The whole Delphi 5
source is included in this release and you don´t need to be an Object
Pascal programmer to do modifications to the graphical user interface.
From the layouter´s mini-FAQ:
Q: "Why are the buttons so big?"
A: "They´re big so you can hit them easily even when you´re drunk!"
Some very nice people from FLT, EViLiSO, RiSCiSO, CNCiSO and EPTiSO have
helped me out with their bug reports and suggestions during beta phase.
Since some of them did not want to be listed with their names, I omitt
listing the beta team here. Thanx to all of you for your time and co-
Special thanx to BiowaX who provided the complete layout of the current
release. Personally I think it looks great =)
OK, now what is this whole stuff about? Since I never know what to write
into dox as this one, I put my full trust in what teachers told me years
ago back in school: it´s always l33t to start an essay with a quote of a
famous person. Well, here we go:
wtf is this hoopy sfv shit
the format is all fucked up
Sounds nice, eh? :) Maybe you´re one of those who had problems processing
some SFV files as well. The background information should be rather use-
ful for you then...
0. Background Information
When I started working on some ISO upload tools, the topic of site advert-
isement banners in *.sfv came into my mind. Some sites were putting their
logo as comment into each SFV file uploaded to them, so if you had a bad
day and a release passed other sites before it came to you, you got a 5kb
SFV file with several site banners in it... and that sucked.
Since I already made some stuff to remove unwanted .nfo´s from ZIP uploads,
I decided to filter all comments out of uploaded .SFV files, so only the
real filenames and their checksum stayed in them. (see SFV file format
That worked fine for the sites I installed the stuff on, files got CRC-
checked by "sfv_check" which comes with the ftp demon glFTPd, without any
problems. A few days later a friend who had downloaded some stuff com-
plained he couldn´t check it using WinSFV and that SFV*Nix just gave an
"./sfv: test.sfv: Unable to identify type of input file" .
I never used neither WINSFV nor SFVNIX before since I always relied on the
site to do the CRC check, so there was no need to check the stuff at home
again. When I compared a SFV file working with the one not working, I fig-
ured out that there was a special line
"; Generated by WIN-SFV32 ..."
at the very top of the working SFV file. I should have run some deeper
analysis of that, but in the mood of that time I just decided to put a
"; Generated by HoopySFV" line to the top of each uploaded SFV file after
stripping all other comments out, hoping it would satisfy any program
looking for a "; Generated by" line in a SFV file.
Guess I was wrong with that, because since my tools were used on some more
sites, more and more people came complaining about the lacking possibility
to check "HoopySFV" - created SFV files with WINSFV or Sfv*Nix. This time
I had a closer look at the source of SFVNIX which is available to public
so you can compile it on your Unix system yourself. Having a look at
"parse.c" showed that SFV*NIX (and I guess WIN-SFV as well) is not only
looking for a line starting with "; Generated by", but also for the name
of either winsfv or sfvnix. That meant SFVNIX/WINSFV would refuse to
process any SFV file not created by either of them. To put it in other
words, with SFVNIX/WINSFV you can´t process any _SFV_ file which doesn´t
contain the name of either of them in it.
Since I was not very in fond of that because SFVNIX/WINSFV might be the
current standard software, but there could be others as well, a friend of
mine arranged a meeting with the author of sfvnix/winsfv, MrAlc, and we
discussed that matter. I pointed out that it´s rather useless to try to
identify a .sfv file by searching for a "Generated by WIN-SFV" in it
because the filename itself should be enough evidence that it´s a SFV file,
and he agreed to that and "promised" to release a fix for that "soon".
It´s now almost three months later and I know exactly two people who got
a quick patch for SFVNIX. There are still people coming to me and complain
about checking "HoopySFV" files with WIN-SFV, so I guess the promised fix
is still not released to public.
Please note that there was no "HoopySFV" existing before this release; the
line "; Generated by HoopySFV" just got inserted into uploaded SFV files on
some sites, just like banners get appended to them. And it was done because
I wanted to satisfay any sfv-checker which needed a "generated by" - line and
not because I needed to see my nick in every damn sfv file. For that reason
I renamed the whole stuff to "public domain SFV builder", so you can do with
it whatever you want. Public domain means there is no copyright of any kind
Several people have asked me for a patch to SFV*NIX since I knew there was
just a little modification to that parse.c file necessary, but since I
neither do have the source of WIN-SFV nor like to tamper with other´s source
codes, I decided to do this little SFV program myself.
If you´re pissed off one day and don´t want to use pdSFV anymore, you don´t
need to worry about compatibility with other programs. pdSFV can read them
all and is pretty flexible in the files it creates.
I´ve included the full source for pdSFV/WIN and I tried to keep its routines
as simple as possible and easy to read. I want to encourage any skilled
and interested programmer out there to do his own SFV utility, since there
is nothing worse than depending on a single or just a few persons concerning
every-day used software. If you implement nice new features, I´d appreciate
it if you´d send your stuff to me. I´ve only made this one due to the many
requests and usually focus on developing other stuff, so if you´re willing
to develop a better allround SFV tool, any cooperation is welcome.
1. SFV file format
A SFV file is used to store the CRC-32 checksum of files. This way you´re
able to send whichever files to a friend and he can check out whether the
files he received are identical to the ones you sent by comparing the CRC
of the file he got with the one listed in the SFV file.
Basically a SFV file contains a list of filenames and their CRC codes.
It is a plain ASCII file with one filename per line with the CRC code
appended to each filename, seperated by a single blank (ascii code 20h).
Comments can be added to SFV files. They must be on a line of their own
and start with "; ", for example:
; This is a comment line
It is common that the very first line of each SFV file is the "generated
by" comment line:
; Generated by MySFV
; Generated by Lamer01 during holiday in Spain on 07/11/99 at 17:08:54
The point about it is that besides the list of files and their checksums
nothing is really needed in a SFV file. Some FTP sites add their banners
as comments. Some SFV tools add the file size, date and time as comments
to it. If you´re writing an utility for SFV stuff yourself, you should
not rely on anything being in there besides the filenames and the CRCs.
If you do and catch a SFV which doesn´t meet your requirements, work on
your stuff and don´t blame any "fucked up format".
2. Using pdSFV
The stuff you got here is a program to work with. Nothing too fancy (yet).
You´ll prolly notice that I´m not that much into Windows programming atm.
The user interface even might look a bit confusing at first sight, so
use it first time when you are sober only :)
It is a windows program and as usual there cannot be said much about how
to use it. Try & error by clicking around yourself.
As a general rule, you always have to select or specify a SFV file you
want to work with. In SFV generation and single files testing mode you
have to select a few files to process as well. Though I had no intention
to make this stuff very userfriendly yet, nothing should crash if you
forget to do something or click on the wrong button. Let me know if you
find something that needs urgent improvement.
Please note that the GUI version does not take command line parameters,
so if you need to SFV check from within your Windows FTP Server, use the
textmode version. Or install Linux and some l33t ftp demon :-)
The textmode application:
pdsfvtm.exe only provides the possibility to check one single file per
call. It will find the SFV file to use itself, so doing a "pdsfvtm.exe
myfile.rar" is enough. Use this to do SFV checks through a Windows based
WIN-SFV compatibility mode:
As stated above in the background information, WINSFV and SFVNIX currently
have problems processing files which don´t have their name in the
"generated by" - line. Switching on compatibility mode in the "create sfv
file" menu will avoid this. Turning this on or off if your own decision.
There are reasons why you should use compatibility mode, and there are
reasons why you shouldn´t.
3. Bugs, comments, new versions
If you have implemented new features, found/fixed a bug, have any
suggestions, want to invite me for dinner, or kill me for whatever
reason, feel free to contact me. :) You will find me if you really
You probably will receive new official versions the same way you
got this one, so keep your eyes open ;)
If you host a perm and stable webserver and are interested in creating
a simple website for this stuff, please let me know.