new.sfxz text-based archive creation utility, C version
Posted 05-20-2015 at 04:53 AM by rainbowsally
new.sfxz text-based archive creation utility, C version
Today's fantastic adventure in Computer Mad Science is the creation of a utility to create the 'sfxz' text-based archives, such as this one (see below). But for anyone not familiar with amazing, magical, and mystifying power of Computer Mad Science, there are some other interesting things going on here.
Feature:
First, about 'slist'. This variation is for straight C. The slist utility was intended to get the nifty pipes and files functionality of lowly bash into high falutin' binary apps.
Just dropping in? All that junk with files and pipes is awkward and time consuming to write longhand every time you want to capture the output from a shell command or read/write a text file. Even pasting snippets is big and ugly, hard to read.
Whether you agree or not, have you ever wished you could do simple stuff like this in C/C++?
or
or
That's what we're talkin' about. You can. Check it out in the fileset in the sfxz archive below.
Now for what's up with this code thing down below.
This archive is the sources for creating new.sfxz which replaces the ugly and overly complicated script version of new.sfxz uploaded a while back. It doubles as the test for 'new.codeblocks' using the "code=c" option. Works great still. You can add files and update them automatically using 'new.codeblocks' even while editing the files. Pretty cool.
'Nuff said, let's just run this and see what it does.
file: lq-new-sfxz.sfxz
purpose: self extracting archive
-The Computer Mad Science Team
:-)
Today's fantastic adventure in Computer Mad Science is the creation of a utility to create the 'sfxz' text-based archives, such as this one (see below). But for anyone not familiar with amazing, magical, and mystifying power of Computer Mad Science, there are some other interesting things going on here.
Feature:
- A simpler, faster, more reliable sfzx sytem using the C slist variation.
- 'new.codeblocks code=c' test with codeblocks ide output to compile the app.
- Yet another slist demo.
First, about 'slist'. This variation is for straight C. The slist utility was intended to get the nifty pipes and files functionality of lowly bash into high falutin' binary apps.
Just dropping in? All that junk with files and pipes is awkward and time consuming to write longhand every time you want to capture the output from a shell command or read/write a text file. Even pasting snippets is big and ugly, hard to read.
Whether you agree or not, have you ever wished you could do simple stuff like this in C/C++?
Code:
a=$(ls)
Code:
b=$(<textfile.txt)
Code:
echo "$b" > textfile.txt
Now for what's up with this code thing down below.
This archive is the sources for creating new.sfxz which replaces the ugly and overly complicated script version of new.sfxz uploaded a while back. It doubles as the test for 'new.codeblocks' using the "code=c" option. Works great still. You can add files and update them automatically using 'new.codeblocks' even while editing the files. Pretty cool.
'Nuff said, let's just run this and see what it does.
file: lq-new-sfxz.sfxz
purpose: self extracting archive
Code:
# run this as 'sh lq-new-sfxz.sfxz' to extract the files # This is the binary sfxz creator that created this file which can be # used to make text based self extracting filesets. # # Here are the contents of the extracted sfxz # # |-- new.sfxz.cbp (codeblocks ide launcher) # `-- src # |-- new.sfxz.c (the brainz) # |-- objlist.c (base for for slist) # |-- objlist.h # |-- sfxz.c (strings for output) # |-- slist.c (bash-like utility for C/C++ strings <--> files) # |-- slist.h # |-- update-strings.exec (help compiler) # |-- usage_str.dat (help strings) # `-- usage_str.txt (source for help strings) # # This sfxz creates 'new.sfxz' using the codeblocks ide. If you have # mc2, use the -fetch switch and grab a C template instead, if you like. # # new.codeblocks, mc2, and new.sfxz are all here (or linked here) at # linuxquestions.org. # # The Computer Mad Science Team. :-) cat << _eof | base64 -d > tmp.tar.xz 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 _eof tar xaf tmp.tar.xz rm tmp.tar.xz
:-)
Total Comments 0