ソースを参照

Add ttstrip.c (needed to build ttbin2oth.c).

git-svn-id: file:///var/svn/tigccpp/trunk@748 9552661e-59e3-4036-b4f2-dbe53926924f
kevinkofler 18 年 前
コミット
26471d1a58
1 ファイル変更200 行追加0 行削除
  1. 200 0
      tigcc/ttpack/ttstrip.c

+ 200 - 0
tigcc/ttpack/ttstrip.c

@@ -0,0 +1,200 @@
+/******************************************************************************
+*
+* project name:    TIGCC Tools Suite
+* file name:       ttstrip.c
+* initial date:    13/08/2000
+* author:          thomas.nussbaumer@gmx.net
+* description:     strips PC header and trailing checksum from an TI executable
+*
+******************************************************************************/
+
+/*
+  This file is part of ttstrip.
+
+  This file is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Lesser General Public
+  License as published by the Free Software Foundation; either
+  version 2.1 of the License, or (at your option) any later version.
+
+  As a special exception, UNMODIFIED copies of ttstrip may also be
+  redistributed or sold without source code, for any purpose. (The Lesser
+  General Public License restrictions do apply in other respects; for example,
+  they cover modification of the program.) This exception notice must be
+  removed on modified copies of this file.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  Lesser General Public License for more details.
+
+  You should have received a copy of the GNU Lesser General Public
+  License along with this library; if not, write to the Free Software
+  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+*/
+
+#ifndef __TTSTRIP__
+#define __TTSTRIP__
+
+// if EMBEDDED_USE is defined, than we use this sourcefile from within another
+// sourcefile
+#ifndef EMBEDDED_USE
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include "ttversion.h"
+#include "revtools.h"
+#include "tt.h"
+
+#ifdef CVS_FILE_REVISION
+#undef CVS_FILE_REVISION
+#endif
+//-----------------------------------------------------------------------------
+// DON'T EDIT THE NEXT REVISION BY HAND! THIS IS DONE AUTOMATICALLY BY THE
+// CVS SYSTEM !!!
+//-----------------------------------------------------------------------------
+#define CVS_FILE_REVISION "$Revision: 1.1 $"
+
+
+//=============================================================================
+// outputs usage information of this tool
+//=============================================================================
+void PrintUsage() {
+#ifndef EMBEDDED_USE
+    PRINT_ID("TTStrip");
+#endif
+    fprintf(USAGE_OUT, "Usage: ttstrip [-quiet] <infile> <outfile>\n\n"                     \
+                       "       -quiet ... don't output standard messages\n\n"               \
+                       "       extracts the raw binary content of a TI file by stripping\n" \
+                       "       the header and trailing checksum which are only necessary\n" \
+                       "       for the link software to send the data to the calc.\n"       \
+                       "       NOTE: after stripping these informations it is no longer\n"  \
+                       "       possible to distinguish between a TI89 and a TI92p file.\n"  \
+                       "       So be careful!\n\n");
+}
+
+
+//=============================================================================
+// its a main ...
+//=============================================================================
+int main(int argc,char *argv[]) {
+#else
+int TTStrip(int argc,char *argv[]) {
+#endif
+    char*          infile    = NULL;
+    char*          outfile   = NULL;
+    FILE*          ifp;
+    FILE*          ofp;
+    char           sig[9];
+    int            length;
+    int            striplen;
+    int            n;
+    int            quiet = 0;
+
+    // check for too less arguments
+    if (argc < 3) {
+#ifndef EMBEDDED_USE
+        PrintUsage();
+#endif
+        return 1;
+    }
+
+    // parse arguments
+    for (n=1; n<argc; n++) {
+        if (!strcmp(argv[n], "-quiet"))  quiet = 1;
+        else if (argv[n][0] == '-') {
+            fprintf(stderr,"ERROR: invalid option %s",argv[n]);
+            return 1;
+        }
+        else if (!infile)    infile    = argv[n];
+        else if (!outfile)   outfile   = argv[n];
+        else {
+#ifndef EMBEDDED_USE
+            PrintUsage();
+#endif
+            return 1;
+        }
+    }
+
+    // check if all necessary arguments are supplied
+    if (!infile || !outfile) {
+#ifndef EMBEDDED_USE
+        PrintUsage();
+#endif
+        return 1;
+    }
+
+#ifndef EMBEDDED_USE
+    if (!quiet) PRINT_ID("TTStrip");
+#endif
+
+
+    if (!(ifp = fopen(infile,"rb"))) {
+        fprintf(stderr,"ERROR: cannot open inputfile %s\n",infile);
+        return 1;
+    }
+
+    memset(sig,0,9);
+    fread(sig,1,8,ifp);
+    fseek(ifp,0,SEEK_END);
+    length = ftell(ifp);
+    length -= 88;   // 86 bytes for header + 2 bytes of trailing checksum
+    rewind(ifp);
+    fseek(ifp,86,SEEK_SET);
+
+    if (strcmp(sig,SIGNATURE_TI89) && strcmp(sig,SIGNATURE_TI92P)) {
+        fprintf(stderr,"WARNING: neither TI89 nor TI92 inputfile\n");
+    }
+
+    if (!(ofp = fopen(outfile,"wb"))) {
+        fprintf(stderr,"ERROR: cannot open outputfile %s\n",outfile);
+        fclose(ifp);
+        return 1;
+    }
+
+    striplen = length;
+    while (length--) fputc(fgetc(ifp),ofp);
+
+    fclose(ifp);
+    fclose(ofp);
+
+    if (!quiet) fprintf(stdout,"%d bytes written to %s\n",striplen,outfile);
+
+    return 0;
+}
+#endif
+
+//#############################################################################
+//###################### NO MORE FAKES BEYOND THIS LINE #######################
+//#############################################################################
+//
+//=============================================================================
+// Revision History
+//=============================================================================
+//
+// Revision 1.7  2002/03/14 08:59:47  tnussb
+// (1) new flag "-quiet" added (suppress standard messages)
+// (2) usage text completely rewritten
+//
+// Revision 1.6  2002/03/04 14:32:42  tnussb
+// now tool can be used as embedded version from within other tools
+// by defining EMBEDDED_VERSION before including the sourcefile
+//
+// Revision 1.5  2002/02/07 09:49:38  tnussb
+// all local includes changed, because header files are now located in pctools folder
+//
+// Revision 1.4  2000/11/28 00:04:21  Thomas Nussbaumer
+// using now USAGE_OUT stream for usage info
+//
+// Revision 1.3  2000/08/23 20:21:29  Thomas Nussbaumer
+// adapted to automatic version display (revtools.h)
+//
+// Revision 1.2  2000/08/13 20:23:15  Thomas Nussbaumer
+// usage text modified
+//
+// Revision 1.1  2000/08/13 16:26:02  Thomas Nussbaumer
+// initial version
+//
+//
+//