Netrek .players database editor (pledit)
v1.02 by Andy McFadden
Last updated: 25-Aug-92


This is a curses-based editor for the .players database.  It will also
coordinate tournament statistic changes with the .global file.

DISCLAIMER: This was hacked up in my spare time.  It is NOT intended to be
extremely robust or a stellar example of good programming practices.  There
are bits and pieces of code and static data which don't actually do anything,
but there's no need to remove them so I haven't bothered...

DISCLAIMER II: This is v1.0.  It may have bugs.  Keep backups of your
database (.players and .global) files!  I tested it with a 12000+ entry
player file (that's about 2.6MB), and it worked fine, so I don't anticipate
any major disasters.


usage: pledit [.players] [.global]


System requirements: this is a server admin tool.  If you don't have a
server, this won't help you.  You need a terminal for which "standout" mode
has meaning (xterms and VT-xxx will work), or you won't be able to see the
cursor.

This is curses-based, but there are different varieties of curses.  If you
have a version with some of the more interesting commands (touchline(),
keypad(), box(w, 0, 0)), then you should #define ENHANCED_CURSES in
pledit.h.  Otherwise your screen updates may not be as efficient or as
pretty.  Some systems also lack vfprintf(); just #define "NO_VFPRINTF".
Also, one system I tried this on (Ultrix) was convinced that the screen was
65 lines high, and there was nothing I could do to convince it otherwise.
Apparently the screen size is hard-wired into the terminal emulation, and
"xterm" was forced to 65, and "vt100" was forced to 24.  Be aware of this
so you don't get totally confused.

BTW, don't forget that scores files are NOT portable.  You need to do a
"scores A > foo" and then "newscores < foo" on the remote system.  Even if
the byte ordering is correct, the floating point representation probably
isn't.



MAIN SCREEN:

Use the cursor keys to move the cursor up/down by a line or a page.  You can
configure the cursor keys from the 'K' menu; the default is vi keys (so k/j
to move up/down, ^B/^F to move a page, etc).  Right now I know about emacs
keys, VT-100 keys, and NCD xterm keys.  The definitions themselves are shown
in the 'K' menu; they correspond to whatever key is appropriate (arrow keys,
PGUP/PGDN, etc).  You can add your own definitions if you can figure out
how.

Searches are done with the SEARCH key, which is also configurable.  On most
setups it's '/', but VT-100 has a "Find" key.  For emacs I had to use ^R
(reverse search), since ^S would send XOFF (I could use "raw" mode, but I'd
rather not block keyboard signals).  Of course, ^R is the screen refresh on
some terminals, but since I explicitly handle ^L it shouldn't be a problem.
If it is, go into input.c and reenable it, and do something creative with the
emacs keys.

Currently, searches are exact-match only.  I really didn't feel like dealing
with the (hideous and probably non-portable) regexp library.  This may change
in the future.

You can mark a player as deleted by pressing 'd', and undelete him by
pressing 'u'.  This doesn't actually do anything - no file access is done
until you tell it to.  It simply marks the player for removal.  Once you
leave pledit and come back, the player will be gone forever.  If you "oops",
copy the tilde file back.

You can edit a player by pressing 'e'.  This brings up the edit screen,
explained below.  You can add a player with the 'a' key; this creates a new
entry with default values and immediately goes into edit mode.  Note that the
initial password will be invalid; thus you must change the password or the
player will be unusable.  (I would consider this more of a feature than a
bug.)

Saving a file is done with the 'w' key.  You will be prompted before any
action is taken.  If you decide to write the contents of .players and
.global, the existing files will be moved to ".players~" and ".global~", and
new files with the original names will be created.



EDIT SCREEN:

You can reset the player's keymap to default by hitting 'r'.  Pressing 'a' or
the space bar will return you to the main menu without saving any changes.
Pressing 'q' will save any changes you have made, then return to the player
list.

Pressing 'e' puts you into edit mode.  You can move between fields with TAB
and Back-TAB (which are whatever is appropriate for your keyboard; for vi I
have chosen TAB (^I) and delete-word (^W).  You can also just hit RETURN.
Pressing the ESCAPE key (which may or may not be the ESC key; again, consult
the 'K' menu for details) will quit edit mode, with your changes intact.  You
can also get out by tabbing past the last field.

To change a field, just start typing.  The highlighted field will show what
you are typing (even if you're changing the password; more on that later).
The backspace/delete key will work.  If you backspace past the beginning of
the field or hit ESCAPE, the original contents of the field will be
restored.  You can have the new entry saved by pressing return, TAB, or
Back-TAB.  You will not be allowed to enter control characters into the
fields, primarily because they screw up the screen.

Some fields are more useful than others.  The password field will accept
plain text, and display it as such.  When you leave edit mode, a new password
will be computed.  Note that if you change the first two characters of a
player name, you MUST change the password (however, pledit doesn't enforce
this...  it's useful to "suspend" a player by changing the first character of
his pseudonym to 'x').  The flags and last_login fields are treated as simple
integers; if you can't figure out what to do with them, don't worry about
it.  Yes, it would be neat to expand them, but why bother?

If you change tournament statistics, you are given the option of updating the
global statistics accordingly.  So if a T-mode scum went up a couple of ranks
by taking undefended planets, you can reduce his numbers and have the global
stats automatically reduced by an appropriate amount.  This way the
artificially inflated T-mode stats will be deflated appropriately.



I think that's all I wanted to say.  Most of this is intuitively obvious.
There's some tuneable parameters in "pledit.h" which you may want to look at.


That's all, folks...

