v16i072: ECU 3 log-to-Excel spreadsheet, Part01/02
wht at n4hgf.Mt-Park.GA.US
wht at n4hgf.Mt-Park.GA.US
Sun Jan 13 08:01:34 AEST 1991
Submitted-by: wht at n4hgf.Mt-Park.GA.US
Posting-number: Volume 16, Issue 72
Archive-name: ecu3-excel/part01
This is an ECU 3 log file to Microsoft Excel (tm) spreadsheet
processor. It reads an ECU logfile and produces two
spreadsheets in the current directory.
To use, unshar the two-part shell archives in your ecu
distribution directory, cd excel and read the README file
#!/bin/sh
# This is ecu3-excel, a shell archive (shar 3.46)
# made 01/10/1991 10:36 UTC by wht at n4hgf
# Source directory /u1/src/ecu
#
# existing files will NOT be overwritten unless -c is specified
#
# This shar contains:
# length mode name
# ------ ---------- ------------------------------------------
# 194 -rw-r--r-- excel/Makefile
# 805 -rw-r--r-- excel/README
# 18217 -rw-r--r-- excel/biff.h
# 339 -rw-r--r-- excel/ecuclog.txt
# 730 -rw-r--r-- excel/ecurlog.txt
# 37790 -rw-r--r-- excel/ecuxls.c
# 1563 -rw-r--r-- excel/log
#
# ============= excel/Makefile ==============
if test ! -d 'excel'; then
echo 'x - creating directory excel'
mkdir 'excel'
fi
if test -f 'excel/Makefile' -a X"$1" != X"-c"; then
echo 'x - skipping excel/Makefile (File already exists)'
else
echo 'x - extracting excel/Makefile (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'excel/Makefile' &&
X#+-------------------------------------
X# ecuxls Makefile
X#--------------------------------------
X#+:EDITS:
X#:01-10-1991-04:36-wht at n4hgf-creation
X
Xecuxls: ecuxls.c biff.h
X cc -O -o $@ ecuxls.c
SHAR_EOF
chmod 0644 excel/Makefile ||
echo 'restore of excel/Makefile failed'
Wc_c="`wc -c < 'excel/Makefile'`"
test 194 -eq "$Wc_c" ||
echo 'excel/Makefile: original size 194, current size' "$Wc_c"
fi
# ============= excel/README ==============
if test -f 'excel/README' -a X"$1" != X"-c"; then
echo 'x - skipping excel/README (File already exists)'
else
echo 'x - extracting excel/README (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'excel/README' &&
XThis is an ECU 3 log file to Microsoft Excel (tm) spreadsheet
Xprocessor. It reads an ECU logfile and produces two
Xspreadsheets in the current directory.
X
XTo make, just type 'make'
X
Xusage: ecuxls [-l logfile]
Xdefault log file is ~/.ecu/log
X
XProduces
X-------------------------------------------------------------
Xecuclog.xls - connection log (date,system,connect time)
Xecurlog.xls - received file log (date,from,length,name)
X
XFiles in the distribution
X-------------------------------------------------------------
XREADME - guess
XMakefile - guess
Xbiff.h - Excel BIFF file format declarations
Xecuxls.c - program code
Xlog - sample log file used for examples below
Xecuclog.txt - sample connection log spreadsheet (ASCII-ized)
Xecurlog.txt - sample received file spreadsheet (ASCII-ized)
SHAR_EOF
chmod 0644 excel/README ||
echo 'restore of excel/README failed'
Wc_c="`wc -c < 'excel/README'`"
test 805 -eq "$Wc_c" ||
echo 'excel/README: original size 805, current size' "$Wc_c"
fi
# ============= excel/biff.h ==============
if test -f 'excel/biff.h' -a X"$1" != X"-c"; then
echo 'x - skipping excel/biff.h (File already exists)'
else
echo 'x - extracting excel/biff.h (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'excel/biff.h' &&
X
X/*+-------------------------------------------------------------------------
X biff.h
X wht at n4hgf.Mt-Park.GA.US
X--------------------------------------------------------------------------*/
X/*+:EDITS:*/
X/*:01-01-1991-15:32-wht at n4hgf-rework earlier effort */
X
X#if !defined(UINT8)
X#define UINT8 unsigned char
X#endif
X#if !defined(UINT16)
X#define UINT16 unsigned short
X#endif
X#if !defined(UINT32)
X#define UINT32 unsigned long
X#endif
X
X#define btDIMENSION 0x00
X#define btBLANK 0x01
X#define btINTEGER 0x02
X#define btNUMBER 0x03
X#define btLABEL 0x04
X#define btBOOLERR 0x05
X#define btFORMULA 0x06
X#define btSTRING 0x07
X#define btROW 0x08
X#define btBOF 0x09
X#define btEOF 0x0a
X#define btINDEX 0x0b
X#define btCALCCOUNT 0x0c
X#define btCALCMODE 0x0d
X#define btPRECISION 0x0e
X#define btREFMODE 0x0f
X#define btDELTA 0x10
X#define btITERATION 0x11
X#define btPROTECT 0x12
X#define btPASSWORD 0x13
X#define btHEADER 0x14
X#define btFOOTER 0x15
X#define btEXTERNCOUNT 0x16
X#define btEXTERNSHEET 0x17
X#define btNAME 0x18
X#define btWINDOWPROTECT 0x19
X#define btVERTICALPAGEBREAKS 0x1a
X#define btHORIZONTALPAGEBREAK 0x1b
X#define btNOTE 0x1c
X#define btSELECTION 0x1d
X#define btFORMAT 0x1e
X#define btFORMATCOUNT 0x1f
X#define btCOLUMNDEFAULT 0x20
X#define btARRAY 0x21
X#define bt1904 0x22
X#define btEXTERNNAME 0x23
X#define btCOLWIDTH 0x24
X#define btDEFAULTROWHEIGHT 0x25
X#define btLEFTMARGIN 0x26
X#define btRIGHTMARGIN 0x27
X#define btTOPMARGIN 0x28
X#define btBOTTOMMARGIN 0x29
X#define btPRINTHEADERS 0x2a
X#define btPRINTGRIDLINES 0x2b
X#define btFILEPASS 0x2f
X#define btFONT 0x31
X#define btFONT2 0x32
X#define btTABLE 0x36
X#define btTABLE2 0x37
X#define btCONTINUE 0x3c
X#define btWINDOW1 0x3d
X#define btWINDOW2 0x3e
X#define btBACKUP 0x40
X#define btPANE 0x41
X#define btXF 0x43
X#define btIXFE 0x44
X#define btEFONT 0x45
X
X/* cell records consist of a BLANK, INTEGER, NUMBER, LABEL, BOOLERR, FORMULA
X * possibly followed by a ARRAY, CONTINUE, TABLE, or TABLE2,
X *
X * NOTE MANY OF THE FOLLOWING ARE NOT SUITABLE FOR USE WITH sizeof()
X * WITHOUT ADDITIONAL CONSIDERATIONS SINCE THE ACTUAL RECORDS MAY BE
X * OF VARIABLE LENGTH
X */
X/*+-------------------------------------------------------------------------
X header record
X--------------------------------------------------------------------------*/
Xtypedef struct bhdr
X{
X UINT16 type;
X UINT16 length;
X} BHDR;
X
X/*+-------------------------------------------------------------------------
X BOF record
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brBOF
X{
X UINT16 type;
X UINT16 length;
X UINT16 vers; /* version number */
X UINT16 dt; /* document type */
X} brBOF;
X#pragma pack()
X
X#define versExcel 2 /* Excel */
X#define versMP 3 /* Multiplan */
X
X#define dtWorksheet 0x10
X#define dtChart 0x20
X#define dtMacroSheet 0x40
X
X/*+-------------------------------------------------------------------------
X INDEX record - optional - must follow FILEPASS (if present),
Xotherwise immediately after BOF
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brINDEX
X{
X UINT16 type;
X UINT16 length;
X long ibRtName; /* absolute fpos of first NAME record */
X UINT16 rwMic; /* first existing row (0-n) */
X UINT16 rwMac; /* last existing row (0-n) */
X long rgibRw[1]; /* array of absolute positions of ROW records */
X} brINDEX;
X#pragma pack()
X
X/*+-------------------------------------------------------------------------
X PRECISION record
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brPRECISION
X{
X UINT16 type;
X UINT16 length;
X UINT16 fFullPrec; /* 1=full precision, 0=as displayed */
X} brPRECISION;
X#pragma pack()
X
X/*+-------------------------------------------------------------------------
X REFMODE record
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brREFMODE
X{
X UINT16 type;
X UINT16 length;
X UINT16 fRefA1; /* 0 = R1C1 mode */
X} brREFMODE;
X#pragma pack()
X
X/*+-------------------------------------------------------------------------
X DELTA record
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brDELTA
X{
X UINT16 type;
X UINT16 length;
X double numDelta; /* max change fvor iterative model */
X} brDELTA;
X#pragma pack()
X
X/*+-------------------------------------------------------------------------
X ITERATION record
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brITERATION
X{
X UINT16 type;
X UINT16 length;
X UINT16 fIter; /* 1=on, 0=off */
X} brITERATION;
X#pragma pack()
X
X/*+-------------------------------------------------------------------------
X 1904 record
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct br1904
X{
X UINT16 type;
X UINT16 length;
X UINT16 f1904; /* 1=uses 1904 date system, 0=otherwise */
X} br1904;
X#pragma pack()
X
X/*+-------------------------------------------------------------------------
X PRINTHEADERS record
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brPRINTHEADERS
X{
X UINT16 type;
X UINT16 length;
X UINT16 fPrintRwCol; /* 1=print row/col headers, 0=not */
X} brPRINTHEADERS;
X#pragma pack()
X
X/*+-------------------------------------------------------------------------
X PRINTGRIDLINES record
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brPRINTGRIDLINES
X{
X UINT16 type;
X UINT16 length;
X UINT16 fPrintGrid; /* 1= print gridlines, 0=not */
X} brPRINTGRIDLINES;
X#pragma pack()
X
X/*+-------------------------------------------------------------------------
X DEFAULTROWHEIGHT record
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brDEFAULTROWHEIGHT
X{
X UINT16 type;
X UINT16 length;
X UINT16 miyRwGhost; /* height of undefined rows in 1/20 points increments */
X} brDEFAULTROWHEIGHT;
X#pragma pack()
X
X/*+-------------------------------------------------------------------------
X FONT record
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brFONT
X{
X UINT16 type;
X UINT16 length;
X UINT16 dy; /* height of font */
X UINT16 grbit; /* font attributes */
X UINT8 cch; /* length of font name */
X UINT8 rgch[1]; /* variable length font name */
X} brFONT;
X#pragma pack()
X
X#define brFONT_rsvd 0xFF00 /* these bits must be zero */
X#define fExtend 0x0080
X#define fCondense 0x0040
X#define fShadow 0x0020
X#define fOutline 0x0010
X#define fStrikeout 0x0008
X#define fUnderline 0x0004
X#define fItalic 0x0002
X#define fBold 0x0001
X
X/*+-------------------------------------------------------------------------
X EFONT record
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brEFONT
X{
X UINT16 type;
X UINT16 length;
X UINT16 lcv; /* index into color table */
X} brEFONT;
X#pragma pack()
X
X#define EFONT_black 0
X#define EFONT_white 1
X#define EFONT_red 2
X#define EFONT_green 3
X#define EFONT_blue 4
X#define EFONT_yellow 5
X#define EFONT_magenta 6
X#define EFONT_cyan 7
X
X/*+-------------------------------------------------------------------------
X FONT2 record - NOT TO BE WRITTEN BY USER CODE (SEE BOOK)
X--------------------------------------------------------------------------*/
X
X/*+-------------------------------------------------------------------------
X HEADER record
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brHEADER
X{
X UINT16 type;
X UINT16 length;
X UINT8 cch; /* length of string */
X UINT8 rgch[1]; /* string */
X} brHEADER;
X#pragma pack()
X
X/*+-------------------------------------------------------------------------
X FOOTER record
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brFOOTER
X{
X UINT16 type;
X UINT16 length;
X UINT8 cch; /* length of string */
X UINT8 rgch[1]; /* string */
X} brFOOTER;
X#pragma pack()
X
X/*+-------------------------------------------------------------------------
X LEFTMARGIN record
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brLEFTMARGIN
X{
X UINT16 type;
X UINT16 length;
X UINT16 num;
X} brLEFTMARGIN;
X#pragma pack()
X
X/*+-------------------------------------------------------------------------
X RIGHTMARGIN record
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brRIGHTMARGIN
X{
X UINT16 type;
X UINT16 length;
X UINT16 num;
X} brRIGHTMARGIN;
X#pragma pack()
X
X/*+-------------------------------------------------------------------------
X TOPMARGIN record
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brTOPMARGIN
X{
X UINT16 type;
X UINT16 length;
X UINT16 num;
X} brTOPMARGIN;
X#pragma pack()
X
X/*+-------------------------------------------------------------------------
X BOTTOMMARGIN record
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brBOTTOMMARGIN
X{
X UINT16 type;
X UINT16 length;
X UINT16 num;
X} brBOTTOMMARGIN;
X#pragma pack()
X
X/*+-------------------------------------------------------------------------
X COLWIDTH record
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brCOLWIDTH
X{
X UINT16 type;
X UINT16 length;
X UINT8 colFirst; /* 1st col in range */
X UINT8 colLast; /* last col in range */
X UINT16 dz; /* column width */
X} brCOLWIDTH;
X#pragma pack()
X
X/*+-------------------------------------------------------------------------
X BACKUP record
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brBACKUP
X{
X UINT16 type;
X UINT16 length;
X UINT16 fBackupFile;
X} brBACKUP;
X#pragma pack()
X
X/*+-------------------------------------------------------------------------
X FORMATCOUNT record
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brFORMATCOUNT
X{
X UINT16 type;
X UINT16 length;
X UINT16 FmtCount; /* number of built-in format records */
X} brFORMATCOUNT;
X#pragma pack()
X
X/*+-------------------------------------------------------------------------
X FORMAT record -see book about ordering of these records
X1. you may add FORMAT records
X2. they should all appear together
X3. don't change order - add new ones to bottom of list
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brFORMAT
X{
X UINT16 type;
X UINT16 length;
X UINT8 cch; /* count */
X UINT8 rgch[1]; /* picture */
X} brFORMAT;
X#pragma pack()
X
X/*+-------------------------------------------------------------------------
X NAME record
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brNAME
X{
X UINT16 type;
X UINT16 length;
X UINT8 grbit; /* attributes (see below) */
X UINT8 grbitPli; /* attributes (see below) */
X UINT8 chKey; /* keyboard shortcut */
X UINT8 cch; /* length of name text */
X UINT8 cce; /* length of name's definition */
X UINT8 rgch[1]; /* this is a gaggle of bytes (see book):
X * text of the name
X * parsed expression for name definition
X * one byte dup of cce
X */
X} brNAME;
X#pragma pack()
X
X/* grbit definitions */
X#define NAME_grbit_RSVD 0xF8 /* must be zero */
X#define NAME_grbit_fCalcExp 0x04 /* =1 if complex function */
X#define NAME_grbit_fProc 0x02 /* =1 if function or command name */
X#define NAME_grbit_RSVD2 0x01 /* must be zero */
X
X/* grbitPli definitions - meaningful only if fProc set */
X#define NAME_grbitPli_RSVD 0xFC /* must be zero */
X#define NAME_grbitPli_fRun 0x02 /* =1 for command names */
X#define NAME_grbitPli_fFunc 0x01 /* =1 for function names */
X
X/* you really need to read the book on all the above; I ain't into
X * copyright infringements and I don't type like I used to anyway;
X * following are the specifiers I needed for names
X */
X
X#define ptgRefN 0x2C /* cell reference within a name */
X#define ptgAreaN 0x2D /* area reference within a name */
X
X#pragma pack(1)
Xtypedef struct opRefN
X{
X UINT8 op; /* == ptgRefN */
X UINT16 grbitRw; /* row - msb can have flags, but I didn't need them */
X UINT8 col; /* column */
X} opRefN;
X#pragma pack()
X
X#pragma pack(1)
Xtypedef struct opAreaN
X{
X UINT8 op; /* == ptgAreaN */
X UINT16 grbitRwFirst;
X UINT16 grbitRwLast;
X UINT8 colFirst;
X UINT8 colLast;
X} opAreaN;
X#pragma pack()
X
X/*+-------------------------------------------------------------------------
X DIMENSION record
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brDIMENSION
X{
X UINT16 type;
X UINT16 length;
X UINT16 rwMic; /* first defined row */
X UINT16 rwMac; /* last row + 1 */
X UINT16 colMic; /* first col */
X UINT16 colMac; /* last row + 1 */
X} brDIMENSION;
X#pragma pack()
X
X/*+-------------------------------------------------------------------------
X ROW record
Xsee the book (this one has some intense considerations)
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brROW
X{
X UINT16 type;
X UINT16 length;
X UINT16 rw; /* row number */
X UINT16 colMic; /* first col */
X UINT16 colMac; /* last col + 1 */
X UINT16 miyRw; /* row height (1/20 point)
X * 0x8000 bit may be set to indicate std height, but
X * height must still be present
X */
X UINT8 irwMac; /* reserved - set to 0 */
X UINT8 fDefault; /* =1 if row has default attributes */
X UINT16 dbRtcell; /* relative file offset to cell records */
X UINT8 rgbAttr[3]; /* default cell attributes */
X} brROW;
X#pragma pack()
X
X/*+-------------------------------------------------------------------------
X BLANK record
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brBLANK
X{
X UINT16 type;
X UINT16 length;
X UINT16 rw; /* row */
X UINT16 col; /* column */
X UINT8 rgbAttr[3]; /* cell attributes */
X} brBLANK;
X#pragma pack()
X
X/*+-------------------------------------------------------------------------
X INTEGER record
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brINTEGER
X{
X UINT16 type;
X UINT16 length;
X UINT16 rw; /* row */
X UINT16 col; /* column */
X UINT8 rgbAttr[3]; /* cell attributes */
X UINT16 w; /* unsigned int value */
X} brINTEGER;
X#pragma pack()
X
X/*+-------------------------------------------------------------------------
X NUMBER record
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brNUMBER
X{
X UINT16 type;
X UINT16 length;
X UINT16 rw; /* row */
X UINT16 col; /* column */
X UINT8 rgbAttr[3]; /* cell attributes */
X double num; /* value */
X} brNUMBER;
X#pragma pack()
X
X/*+-------------------------------------------------------------------------
X BOOLERR record
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brBOOLERR
X{
X UINT16 type;
X UINT16 length;
X UINT16 rw; /* row */
X UINT16 col; /* column */
X UINT8 rgbAttr[3]; /* cell attributes */
X UINT8 bBoolErr; /* value */
X UINT8 fError; /* 1 if error, 0 if boolean */
X} brBOOLERR;
X#pragma pack()
X
X#define ERR_NULL 0
X#define ERR_DIV0 7
X#define ERR_VALUE 15
X#define ERR_REF 23
X#define ERR_NAME 29
X#define ERR_NUM 36
X#define ERR_NA 42
X
X/*+-------------------------------------------------------------------------
X LABEL record
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brLABEL
X{
X UINT16 type;
X UINT16 length;
X UINT16 rw; /* row */
X UINT16 col; /* column */
X UINT8 rgbAttr[3]; /* cell attributes */
X UINT8 cch; /* length of string */
X UINT8 rgch[1]; /* string */
X} brLABEL;
X#pragma pack()
X
X/*+-------------------------------------------------------------------------
X NOTE record
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brNOTE
X{
X UINT16 type;
X UINT16 length;
X UINT16 rw; /* row */
X UINT16 col; /* column */
X UINT8 cch; /* length of string */
X UINT8 rgch[1]; /* string */
X} brNOTE;
X#pragma pack()
X
X/*+-------------------------------------------------------------------------
X FORMULA record
X--------------------------------------------------------------------------*/
X#pragma pack(1)
Xtypedef struct brFORMULA
X{
X UINT16 type;
X UINT16 length;
X UINT16 rw; /* row */
X UINT16 col; /* column */
X UINT8 rgbAttr[3]; /* cell attributes */
X UINT8 num[8]; /* current value (see book) */
X UINT8 sbRecalc; /* recalc flag */
X UINT8 cce; /* length of parsed expression */
X UINT8 rgce[1]; /* parsed expression */
X} brFORMULA;
X#pragma pack()
X
X/*
X * rgbAttr definitions
X */
X#define rgbAttr0_fHidden 0x80
X#define rgbAttr0_fLocked 0x40
X#define rgbAttr1_fnt 0xC0 /* font # (0-3) */
X#define rgbAttr1_ifmt 0x3F /* format code (0-63) */
X#define rgbAttr2_fShade 0x80
X#define rgbAttr2_fBottom 0x40
X#define rgbAttr2_fTop 0x20
X#define rgbAttr2_fRight 0x10
X#define rgbAttr2_fLeft 0x08
X#define rgbAttr2_alc 0x07 /* alignment code mask */
X
X#define alc_GENERAL 0
X#define alc_LEFT 1
X#define alc_CENTRAL 2
X#define alc_RIGHT 3
X#define alc_FILL 4
X#define alc_DEFAULT 7 /* Multiplan only */
X
X/* vi: set tabstop=4 shiftwidth=4: */
X/* end of biff.h */
SHAR_EOF
chmod 0644 excel/biff.h ||
echo 'restore of excel/biff.h failed'
Wc_c="`wc -c < 'excel/biff.h'`"
test 18217 -eq "$Wc_c" ||
echo 'excel/biff.h: original size 18217, current size' "$Wc_c"
fi
# ============= excel/ecuclog.txt ==============
if test -f 'excel/ecuclog.txt' -a X"$1" != X"-c"; then
echo 'x - skipping excel/ecuclog.txt (File already exists)'
else
echo 'x - extracting excel/ecuclog.txt (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'excel/ecuclog.txt' &&
XECU Connection Log - created 01-10-1991 05:12:54
XDate System Phone Time
X1991-01-09 16:23 tridom 555-1212 02:02:07
X1991-01-09 19:45 n4vu 555-1212V 00:03:07
X1991-01-09 19:51 n4vu 555-1212V 00:01:53
X1991-01-09 20:21 p1so 555-1212PF 00:00:23
X1991-01-09 20:22 kd4nc 555-1212C 02:00:38
SHAR_EOF
chmod 0644 excel/ecuclog.txt ||
echo 'restore of excel/ecuclog.txt failed'
Wc_c="`wc -c < 'excel/ecuclog.txt'`"
test 339 -eq "$Wc_c" ||
echo 'excel/ecuclog.txt: original size 339, current size' "$Wc_c"
fi
# ============= excel/ecurlog.txt ==============
if test -f 'excel/ecurlog.txt' -a X"$1" != X"-c"; then
echo 'x - skipping excel/ecurlog.txt (File already exists)'
else
echo 'x - extracting excel/ecurlog.txt (Text)'
sed 's/^X//' << 'SHAR_EOF' > 'excel/ecurlog.txt' &&
XECU Received File Log - created 01-10-1991 05:12:54
XDate From Length Name
X1991-01-09 21:46 kd4nc 4060 afterlint.c
X1991-01-09 21:46 kd4nc 9889 ecu.c
X1991-01-09 21:46 kd4nc 4175 ecu.h
X1991-01-09 21:46 kd4nc 12787 ecuicmd.c
X1991-01-09 21:47 kd4nc 23999 eculine.c
X1991-01-09 21:48 kd4nc 48334 ecuphone.c
X1991-01-09 21:48 kd4nc 31419 ecurcvr.c
X1991-01-09 21:48 kd4nc 3040 ecushm.h
X1991-01-09 21:49 kd4nc 585 ecuvmin.h
X1991-01-09 21:49 kd4nc 14172 ecuxenix.c
X1991-01-09 21:49 kd4nc 6599 gint.c
X1991-01-09 21:50 kd4nc 27013 lint_args.h
X1991-01-09 21:50 kd4nc 24245 pcmd.c
X1991-01-09 21:50 kd4nc 3525 pprintf.c
X1991-01-09 21:51 kd4nc 1286 stdio_lint.h
SHAR_EOF
chmod 0644 excel/ecurlog.txt ||
echo 'restore of excel/ecurlog.txt failed'
Wc_c="`wc -c < 'excel/ecurlog.txt'`"
test 730 -eq "$Wc_c" ||
echo 'excel/ecurlog.txt: original size 730, current size' "$Wc_c"
fi
true || echo 'restore of excel/ecuxls.c failed'
echo End of part 1, continue with part 2
exit 0
exit 0 # Just in case...
--
Kent Landfield INTERNET: kent at sparky.IMD.Sterling.COM
Sterling Software, IMD UUCP: uunet!sparky!kent
Phone: (402) 291-8300 FAX: (402) 291-4362
Please send comp.sources.misc-related mail to kent at uunet.uu.net.
More information about the Comp.sources.misc
mailing list