Sort the files form the SAS James mappack Check my backup CD’s for a copy of the (CS) de_dust RvS Map. Send to Wiz.
Terry Poulin
late night
Well I spent an interessting night, still havn’t solved the issue of whats wrong but I did accomlish a few things. Better code checking with gcc How to use lint How to use the GNU Debugger Personally I think that graphical front ends can have some very great advantages. But one should be able to use the basic tools by hand when/if necessary. As being able to live in a shell (no gui enviroment) is a part of my studies. So Being able to use a debugger on the CLI is important to me. Oh well each in turn. Most IDE’s provide some sort of user interface to wrap around the make and debuging tools. The basic idea that most compilers (so I’ve heard) follow including the GNU Compiler Collection gcc/g++ (gnu c/c++ compiler) use. Are as follows. gcc source.file -o outfile Now we don’t need the -o outfile if we like for example to compile our source.file into an execuitable named a.out in this case ! With the -o option we can choose a name for the execuitable. So ‘gcc rf.c -o rf’ would create an executible named ‘rf’ instead of ‘a.out’ from our rf.c source file. Is this any harder then Build->Compile in an IDE /w a mouse? Not really in my humble opinoin. Especially if you can sider that CLI access is embedded in many editors and many editors work in the CLI. Lets turn on some simple warnings gcc source.file -Wall -o outfile Now while one might argue any code that compiles and works is good enough. But what if it doesn’t work as exspected or it’s not very good? The -Wall option will at least give us a stronger warnings and errors about bad practices. Since -Wall turns on a bunch of warnings I’ll walk through some of them at the end. I personally have used -Wall since I found out there was an all switch (Thank you FreeBSD KNF Style manual!). And when it trips a warning message it usually reminds me I’m doing some thing wrong or I need to go correct a magic typomatical error. I noticed a few other niffty things in the OpenBSD KNF style guide. gcc -Wall -W -Wpointer-arith -Wbad-function-cast source.file -o outfile Gives us plenty of useless-to-semi-useful-to-useful information at times. Theres even more options. Since this is a lot more to type and I’m to lazy to whip up a little Makefile for all my stuff. I made a shell alias for it. I think its worth while to explore the available warning options and sort them as one needs. Note to self, work on some Makefile templets. Another intereing tool I always wanted to toy with, is lint. lint is a code checker for trying to detect features in C sources that are likely to be bugs, non-portable, or wasteful, e.t.c. The lint program h as a good enouhg manual which documents its command line switches but the basic useage is. lint source.c So far I like the -cehuz options most often and have an alias for it. And the -s and -p options from time to time have use hehehe. One thing I found odd about lint, is that it complaned about my // comments. rf.c(5): warning: ANSI C does not support // comments [312] Normally I use only /**/ comments and occasionally a few // in C++. Or I’ll mix /**/ and // comments if I’m leaving my self comments of diffrent types in a non-source file. Like /* Change done to something */ What I changed // Note for later for a meeting about it When I’m writing up files for things as I do’em. In this partuclar file how ever, since rf.c has been floating between systems a bit and editors I placed a pair of mode lines in it to set some options for my editors.
/*
* rf read file to standard out
*/
// vim: set noexpandtab ts=8 sw=4 ai :
// vi: set ai nu sw=4 :
Basically turn on line numbering in Vi and make sure my indentation settings are consistant, then turn on auto-indent in case I want it. (I don’t often use it). I remember, why I started using strictly /* Comments */ when I had always used // comments before. Was because I was told that some (older) compilers had problems with the newer // Comments. To use the GNU Debugger gdb to debug a program, first we need to enable the debugging symbols in GCC. We can do this by appending a -ggdb option some where in our compilation. gcc -Wall source.c -o outfile -ggdb Then we can run gdb outfile to start the debugger. At first when I tried looking at the debugger ages ago I didn’t have much luck with it. But after reading the manual like I usually do _before_ toying with CLI software it makes much more sense. You can get a topic list by typing help and more specific help like help breakpoints With GDB we can step through the program line by line, set break points at lines and/or functions. Examine data since as what value does variable foo have ? Run backtraces, look at the stack, set the command line arguments and all kinds of stuff. Really GDB deserves its own attention to the subject. Its long been my practice to save and pump code through GCC every few minutes or routines just to see if I missed any syntax errors I may have made. You don’t want to know how many times I’ve been preplexed just because I used a comma instead of a period or a period instead of a comma. And after hours infront of an editor couldn’t see the difference in my font lol – yes I am looking for a better fixed-width font ^_^ Now with lint and the various options of GCC I can do more for less 🙂 Since trying todo ANY THING during day light is pointless in this family. And trust me, when your the kind that inhales good manuals. And it takes you 30 minutes just to get through the first paragraph of a manual on PHP Syntax you know you have a fucking problem. So si nce I can’t code during the day. I have to do it late at night and I can’t do shit for long. So like 0735 in the morning these tools do kind of help me correct errors. From man 1 gcc Warnings are diagnostic messages that report constructions which are not inherently erroneous but which are risky or suggest there may have been an error.
The -Wall option I listed turns on all this according to the manual Warn whenever a declaration does not specify a type. Warn whenever a function is used before being declared. Warn if the main function is declared or defined with a suspicious type. Warn whenever a function is defined with a return-type that defaults to int. Also warn about any return statement with no return-value in a function whose return-type is not void. Warn whenever a local variable is unused aside from its declaration, whenever a function is declared static but never defined, and whenever a statement computes a result that is explicitly not used. Warn whenever a switch statement has an index of enumeral type and lacks a case for one or more of the named codes of that enumeration. (The presence of a default label prevents this warning.) case labels outside the enumeration range also provoke warnings when this option is used. Warn whenever a comment-start sequence `/*’ appears in a comment. Warn if any trigraphs are encountered (assuming they are enabled). Check calls to printf and scanf, etc., to make sure that the arguments supplied have types appropriate to the format string specified. Warn if an array subscript has type char. This is a common cause of error, as programmers often forget that this type is signed on some machines. Some optimization related stuff. Warn if parentheses are omitted in certain contexts. When using templates in a C++ program, warn if debugging is not yet fully available (C++ only). From man 1 gcc: The remaining `-W…’ options are not implied by `-Wall’ because they warn about constructions that we consider reasonable to use, on occa sion, in clean programs.
And here they are stright from the fine manual.
-Wtraditional
Warn about certain constructs that behave differently in tradi-
tional and ANSI C.
o Macro arguments occurring within string constants in the macro
body. These would substitute the argument in traditional C, but
are part of the constant in ANSI C.
o A function declared external in one block and then used after
the end of the block.
o A switch statement has an operand of type long.
-Wshadow
Warn whenever a local variable shadows another local variable.
-Wid-clash-len
Warn whenever two distinct identifiers match in the first len
characters. This may help you prepare a program that will com-
pile with certain obsolete, brain-damaged compilers.
-Wpointer-arith
Warn about anything that depends on the "size of" a function
type or of void. GNU C assigns these types a size of 1, for
convenience in calculations with void * pointers and pointers to
functions.
-Wcast-qual
Warn whenever a pointer is cast so as to remove a type qualifier
from the target type. For example, warn if a const char * is
cast to an ordinary char *.
-Wcast-align
Warn whenever a pointer is cast such that the required alignment
of the target is increased. For example, warn if a char * is
cast to an int * on machines where integers can only be accessed
at two- or four-byte boundaries.
-Wwrite-strings
Give string constants the type const char[length] so that copy-
ing the address of one into a non-const char * pointer will get
a warning. These warnings will help you find at compile time
code that can try to write into a string constant, but only if
you have been very careful about using const in declarations and
prototypes. Otherwise, it will just be a nuisance; this is why
we did not make `-Wall' request these warnings.
-Wconversion
Warn if a prototype causes a type conversion that is different
from what would happen to the same argument in the absence of a
prototype. This includes conversions of fixed point to floating
and vice versa, and conversions changing the width or signedness
of a fixed point argument except when the same as the default
promotion.
-Waggregate-return
Warn if any functions that return structures or unions are de-
fined or called. (In languages where you can return an array,
this also elicits a warning.)
-Wstrict-prototypes
Warn if a function is declared or defined without specifying the
argument types. (An old-style function definition is permitted
without a warning if preceded by a declaration which specifies
the argument types.)
-Wmissing-prototypes
Warn if a global function is defined without a previous proto-
type declaration. This warning is issued even if the definition
itself provides a prototype. The aim is to detect global func-
tions that fail to be declared in header files.
-Wmissing-declarations
Warn if a global function is defined without a previous declara-
tion. Do so even if the definition itself provides a prototype.
Use this option to detect global functions that are not declared
in header files.
-Wredundant-decls
Warn if anything is declared more than once in the same scope,
even in cases where multiple declaration is valid and changes
nothing.
-Wnested-externs
Warn if an extern declaration is encountered within a function.
-Wenum-clash
Warn about conversion between different enumeration types (C++
only).
-Wlong-long
Warn if long long type is used. This is default. To inhibit
the warning messages, use flag `-Wno-long-long'. Flags
`-W-long-long' and `-Wno-long-long' are taken into account only
when flag `-pedantic' is used.
-Woverloaded-virtual
(C++ only.) In a derived class, the definitions of virtual
functions must match the type signature of a virtual function
declared in the base class. Use this option to request warnings
when a derived class declares a function that may be an erro-
neous attempt to define a virtual function: that is, warn when a
function with the same name as a virtual function in the base
class, but with a type signature that doesn't match any virtual
functions from the base class.
-Winline
Warn if a function can not be inlined, and either it was de-
clared as inline, or else the -finline-functions option was giv-
en.
-Werror
Treat warnings as errors; abort compilation after any warning.
Ever think about some thing and not be able to get it out of ya head? Then when you try to you can’t remeber the details ? Hah I’m crazy. Oh well back to BBC Radio 1 and some ANSI C.
A plan man
Ahhh a theory that proves its snuff.
The MP Warehouse map is a nice little hostage rescue. We have about 4 levels
and two buildings. Theres also a loading dock on one flank.
The first building is a loading area. Roughly 4 floors. Ground, Lower Window
(Sniper area) and Catwalk to second building (hostage 1). Briefing room with
upper window (Large room). Then an upper area with a storeroom and a skybridge
to the second building (hostage 2).
The second building is a large warehouse with stairs on its far Eastern flank
going to Level 2 with the first hostage. Also a stairwell in the center of the
warehouse in the hostage area. Where we have a room like this
___________________________________
__|________| |Stairs up||||
__D________D Window |
| | | -------------------------|
| | | | Cat | |
| | | | Walk| |
| | | |Above| |
| | | _______________|
| | |_____________|Stairs down___|
|_| |
| Few Boxes Many Boxes |
| Hostage |
|____________________________ D __|
| Stairs down|||||||||||||||| |
-----------------------------------
D = Door
Full of tangos. Theres two on that catwalk above the room that shoot the
hostage in the upper area. That window room has stairs going up to the catwalk.
If those guys are alive and you enter from the stairs ’round thew many boxes.
They kill the upper hostage. Oh most every time today, when we assaulted from
the stairs and catwalk from the other building (to the left of the window
room). The top hostage died, once we lost the lower one hehe.
When I plugged the guys on the catwalk, nada ! The top hostage was safe when we
took the lower. So we could proceed to save the top one as fast as possible.
I’ve been playing long enough with my analytical mind. To start finding reasons
why things work or don’t work. I also bet Hexen a virtual beer on the outcome
of one of the tests. My past tests won me one hehe. So we have to ether take
the upper & lower at the same time. Or take care of those goons. Personally,
what I’m liking when you can have an 8 man team. Set up to snipe the catwalk
guys, have an element bang the brains out of the top hostage area. While
another team or teams take the lower. With 8 men on duty with SD weapons one
could enact a risky but realistically fun (imho) plan of multiple entry &
simultaneous take downs.
Alpha / Red team of 3 to take the top hostage, must clear first building.
Bravo / Blue team of 3 to take the stairs to the lower hostage with bangs. The
RG breaks off, uses gas to cover his flank (left) and sets up to snipe the
catwalk guys using a scoped or automatic weapon.
Charley / Green team of 2 to enters building 1 from the ground floor, backs up
Alpha / Red. While Charley / Green moves onto the catwalk, Alpha / Red moves up
the stairs, threw the upper window briefing room. Up the stairs into the store
room and onto the sky bridge.
All teams report in position, hold for entry on pre-elected team leaders GO
code. On the go, Alpha / Red slides open the door, tosses in 3-4 flashbangs to
cover as much of the room as possible. Including the area near them, the boxes
to the right, and near the hostage at 12 o clock far / catwalk to his left.
Green / Charley kicks in or breachs the catwalk door on level 2 and floods into
the lower hostage area. As Bravo / Blue kicks in or breaches their door on the
stairs, flash bangs and clears. Bravo / Blue and Alpha / Red take their
hostages and get the heck out of Dodge while Charley / Green clears out any
remaining threats.
Just a short idea to thinker with hehe. Basically take all hostages and threats
to the hostages as close to the same time as possible. Using SD weapons to
sneak in to position. Then toss in a few firecrackers and over whelm the tangos
from multiple angles and in multiple rooms at once.
I ain’t no Spider for nut’n man.
Hackish Solutions
Well, couldn’t stand my bloody wireles keyboard any more. Its a nice one, made by a chinise company that specializes in KBs. Restamped Gateway of course.
The keyboard I got for $3 at a library book sale (along with a pretty sweet 15″ Monitor). Has a problem of a sticking left shift. Well I think I’ve fixed it.
I Rolled over the keyboard and unplugged it. Unscrewed stuff and took off the bottom. I unscrewed what looked like a grounding wire and metal plate. Pull off a flat flismy layer with a pattern on it. No clue what its for yet. Then pulled off the wafer that interfaced with the keys. Yes I did read the technical manual to the NCC-1701-D a few to many times when I was young. So ‘wafer’ is in my technical volcabulary, thank you. The thing was pretty clean, so no problems. Packed every thing back up but the key was still sticky. Although not as bad, so what I did. Was to improvise from masking tape & a cable tie (which has been sitting on my desk annoying me for weeks). To make a little anti-stick sticky buffer. So instead of the key getting pushed down far enough to get STUCK it would be buffered back up from the cushion effect. So far it works prety good,maybe 95% of the time no stuck key, vs 75%. Not bad for a quick & DIRTY solution. Not very elagent but gee it worked well :-).
bounty
Plentiful day really. When I logged on both Valroe and Leon happened to be on. Ahh perfections start. Managed to get Miles for back up, Rasas office for ASCII support, TS2 for Voice over, TG#1 for operations and take care of some business.
Wiz has been showing me around the site. I’m really lucky to have some one to teach me. I know he didn’t, so he had to learn the hardway and fast often enough. Although I am sorry about the amount of AFK’age I’ve put him threw.
Oddly enough, ma was complaning that I “don’ do any thing but sit infront of that
Been working threw a nice book on html4/xhtml1/css2. I know that we’re on 1.0/1.1 recommendation & 2.0 working drafts for xhtml. But it helps. I do know my way around plane old HTML enough but I’m not familer with CSS. Casscading Style Sheets do how ever seem a good thing to learn. Oh well hehe. I also need to start learning PHP a bit, I want to inhale the manual some time along with a few others.
Honor
I have been perhapes, more greatly honored then I ever thought I could be.
Who knows, maybe they will put me to good use without over working my sorry @l2$$
Note to self
My scratch pad.
>3. any tryout should be posted on the calendar so everyone in the clan
>knows that there will be a tryout. Before you make the appointment, the
>tryout administrators need to be all lined up.
Now if I could just wrangle a few people into the right position at the same time. If I have to, I’ll conduct this tryout my self although I’d really like it if a LCpl can do it.
Supplimental note to self, be more agressive if neccessary about getting people involved then come as you are lets get the flubber done on time.
MicroMac
Been playing a bit, installed editors/ uemacs, qemacs, em, mg, jove, and emacs.
uemacs is a simple MicroEMACS 4.0 set up, looks good for learning. I.e. a Pico/Nano style shortcut buffer on top.
qemacs wouldn’t start, so much for quick emacs
em is a modified MicroEMACS 3.x/4.0 with an ID of uEmacs/PK-TOY 4.0.17
jove is Johnatons Own Version of Emacs, looks like my favorite so far. It asks “Some buffers haven’t been saved; leave anyway? ” rather then a save y/n, modified buffers exist still leave yes or no and please say exactly yes or no blah blah like GNU Emacs. em & uemacs share joves trate here as well but mg takes after emacs proper. Only mg won’t ask before exit if its the stratch buffer.
emacs, well is GNU Emacs. Slow loading bukly bastard with a 4.5MB binary !! Compare to the others which are smaller then nvi/nex but bigger then ed. I suppose the fact that its the only emacsen in this list that has X11/GUI support warrents its bulk… maybe
Terry@Dixie$ du -ch /usr/local/bin/emacs 8:04
4.5M /usr/local/bin/emacs
Terry@Dixie$ du -ch /usr/local/bin/jove 8:05
148K /usr/local/bin/jove
Terry@Dixie$ du -ch /usr/bin/nex 8:05
304K /usr/bin/nex
Terry@Dixie$ du -ch /usr/bin/vi 8:05
304K /usr/bin/vi
Terry@Dixie$ du -ch /usr/local/bin/uemacs 8:06
124K /usr/local/bin/uemacs
Terry@Dixie$ du -ch /usr/local/bin/em 8:06
84K /usr/local/bin/em
Terry@Dixie$ du -ch /usr/local/bin/mg 8:06
98K /usr/local/bin/mg
Terry@Dixie$ du -ch /usr/local/bin/vim 8:06
1.4M /usr/local/bin/vim
As you can see, em is the smallest and emacs the fatest. So far, I think I like Jove but they all seem to lack GNU/X Emacs self-documentational nature. Personally I prefer nVi or Vim, but Jove is pretty nice. All of these emacsen do support multiple editing buffers, which is one thing I did like ’bout emacs back when I used to use XEmacs as my primary editor.
mg is a variant of MicroEMACS maintained by the OpenBSD people, nice little editor. I’ve never used OpenBSD and have little expirence with NetBSD so I don’t know if they have an easyeditor like FreeBSD’s ee but I’d reckon mg could serve the same purpose. I generally use ‘vi’ on systems lacking vim though, so I dunno. So far in my travels the only editor I can’t use well, has got to be ed and emacs. Why? Because ed’s ‘?’ error message annoys me and GNU Emacs just pisses me off by its very nature.I can use Emacs pretty well, I just choose not to (again I prever Vi)
shocker
Well to day I did get a bit of a shock. Me, Wiz, Shield, Recon, and a few pubs on TG#1. Between maps Shield tells Wiz he’s in vialation of the Code of Honor.
Wiz got promoted to Troop Captain, a fine thing 🙂
He’s our web master, keeps the site going, good SNCO for as long as I’ve known’em. Maybe as close to a mentor I’ve had in [SAS]. Its always good when friends got promoted hehehe.
Next map. Shield tells me I am breaking CoH too, tells me I have Wiz’s old Rank (sgt). So I tag up after bumblers moement. A min later Shield says he made a Mistake, I’m not a Sgt I’m SSM.
I miss read SSM as RSM, since we have not had any SSM in awhile. Kinda embarrasing on X-Fire for a minute. When I re-read Shields msg and saw the first S and corrected it. I was never so happy to be promoted ! lol. Wew…
Turns out my m8 Rasa is also a SSM and our mutual team mate Rouge is acting RSM. Really, I was hoping they’d just promote Rouge to Sgt and let us Cpl have a good leader. Damn I’m glad they picked Rouge. Not that I have issues but, hes the best and I’m actually glad we all skipped regular sgt. I’ve always looked at the higher ranksk with respect, first time I met Shield. This was before he was CO, prolly Major or an SNCO. I called him Sir. Being the sort he is, of course he didn’t like the ‘sir’ part.
Even though, I have a lot of respect for our officers and every member. To be honest, I’ve always looked on the ‘Sgt’ rank as sort of a death curse. Since Wiz made Sgt way back when, I noticed how his activity dropped. Not to mention JB, Blade e.t.c. This is why after Cpl, I stopped sending promo-suggestions. Being where we are now I’m happy. I was some what fearing promotion actually.
To be honest, for a long time I’ve always wrestled with the idea of leaving. Even when I was a P.R. But, when I was a P.R. I had such joy and I desided I wanted to continue on to the Selection Course in the hopes of some day passing on what I learned. My time in the [SAS] has really been a blessing to me, in numerous ways really. As a trp I trained my self to a razors edge, as a LCpl I floundered (imho). I remember being told that it was a Sgts job for such things, never have really wanted to have rank. Well, I did always have a soft spot for Cpl. Thanks to Adze, Wiz, JB, and Blade. I remember when I was just a newbie Adze was always popping in/out. That bloody Cpl was inspiring slash annoying. Being a Cpl, really was the highest I wanted to go. Just high enough to be free to get involved in training/clan matters but low enough to be sure I’d spend a lot of time with the server, public, and members.
Really what good is a job if you don’t get to be with your friends and meet new people ? At least as an SSM I know I can still be where I want, yet still be useful to the team. The happiest thing they could have ever given me for a Rank they did. Trooper when I passed my second tryout with a 98%. Any thing after thats kinda gravy as long as I can be useful.
So what is my new Job Description?
/****************************
The Squadron Sergeant Major, working closely with the Regiment Sergeant Major, will be expected to make suggestions regarding our [SAS] member training procedures, and implement any necessary changes upon approval of the Captain. The Squadron Sergeant Major must ensure that all Staff Sergeants are correctly educating the [SAS] membership and Sergeants are correctly educating prospective members on all aspects of the [SAS] Code of Honor and Standard Operating Procedure Training.
The Squadron Sergeant Major will report directly to the Regiment Sergeant Major about their training methods and scheduling, but he is allowed to, when necessary, act independently to provide supplemental training to the [SAS] membership.
The Squadron Sergeant Major is responsible for administering the Advanced Training Awards Tryout to selected [SAS] members. Eligibility to participate in the ATA Tryout is determined by the SSM. In situations where the SSM is not able, due to logistical reasons, to administer the ATA, the RSM or a qualified trainer shall act as a replacement for that instance.
************************/
The ATA part is a bit dated since the one fearsome training map for it. Has been released for general training, I use it often. But other wise the JD looks ’bout ripe. Speaking of ATAs the only person to come close or actualyl did do it on the first (can’t remeber which) was Random when he was CO. I take my helmet off to ye for that !
Great map for self-training though heheehe.