|
Packit |
b099d7 |
/* $XConsortium: TextScroll.c /main/4 1995/07/15 21:02:31 drk $ */
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* Motif
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* Copyright (c) 1987-2012, The Open Group. All rights reserved.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* These libraries and programs are free software; you can
|
|
Packit |
b099d7 |
* redistribute them and/or modify them under the terms of the GNU
|
|
Packit |
b099d7 |
* Lesser General Public License as published by the Free Software
|
|
Packit |
b099d7 |
* Foundation; either version 2 of the License, or (at your option)
|
|
Packit |
b099d7 |
* any later version.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* These libraries and programs are distributed in the hope that
|
|
Packit |
b099d7 |
* they will be useful, but WITHOUT ANY WARRANTY; without even the
|
|
Packit |
b099d7 |
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
Packit |
b099d7 |
* PURPOSE. See the GNU Lesser General Public License for more
|
|
Packit |
b099d7 |
* details.
|
|
Packit |
b099d7 |
*
|
|
Packit |
b099d7 |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit |
b099d7 |
* License along with these librararies and programs; if not, write
|
|
Packit |
b099d7 |
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
|
|
Packit |
b099d7 |
* Floor, Boston, MA 02110-1301 USA
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
/*
|
|
Packit |
b099d7 |
* HISTORY
|
|
Packit |
b099d7 |
*/
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Standard C headers */
|
|
Packit |
b099d7 |
#include <stdio.h>
|
|
Packit |
b099d7 |
#include <math.h>
|
|
Packit |
b099d7 |
#include <sys/types.h>
|
|
Packit |
b099d7 |
#include <sys/stat.h>
|
|
Packit |
b099d7 |
#include <sys/time.h>
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* X headers */
|
|
Packit |
b099d7 |
#include <X11/Xlib.h>
|
|
Packit |
b099d7 |
#include <X11/StringDefs.h>
|
|
Packit |
b099d7 |
#include <X11/Xatom.h>
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#include <testlib.h>
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define NUM_COLUMNS 80
|
|
Packit |
b099d7 |
#define NUM_ROWS 24
|
|
Packit |
b099d7 |
#define MAX_LINE_LEN 512
|
|
Packit |
b099d7 |
#define MAX_NAME_LEN 255
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define DEFAULT_IN_FILE1 "./RowCol1_1.c"
|
|
Packit |
b099d7 |
#define DEFAULT_IN_FILE2 "./WordWrap.dat"
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define TEXT1_X 10
|
|
Packit |
b099d7 |
#define TEXT1_Y 10
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void fill_text_buf();
|
|
Packit |
b099d7 |
static void fillTextCB();
|
|
Packit |
b099d7 |
static void quitCB();
|
|
Packit |
b099d7 |
static void scrollToEndCB();
|
|
Packit |
b099d7 |
static void scrollToBeginCB();
|
|
Packit |
b099d7 |
static void PrintLapseTime();
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Global Variables */
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
char infile_name[MAX_NAME_LEN + 1];
|
|
Packit |
b099d7 |
char *text_string;
|
|
Packit |
b099d7 |
char *small_text_string = "SMALL TEXT";
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Widget Form1;
|
|
Packit |
b099d7 |
Widget Text1;
|
|
Packit |
b099d7 |
Widget fillText;
|
|
Packit |
b099d7 |
Widget scrollToBegin;
|
|
Packit |
b099d7 |
Widget scrollToEnd;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
int total_lines = 0;
|
|
Packit |
b099d7 |
Boolean show_perf_bug = False;
|
|
Packit |
b099d7 |
Boolean word_wrap_on = False;
|
|
Packit |
b099d7 |
Boolean test_word_wrap = False;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XmFontList newfontlist;
|
|
Packit |
b099d7 |
XFontStruct *newfont;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Arg args[MAX_ARGS];
|
|
Packit |
b099d7 |
int n;
|
|
Packit |
b099d7 |
FILE *in_fp;
|
|
Packit |
b099d7 |
FILE *outfp;
|
|
Packit |
b099d7 |
int in_fd;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
main (argc, argv)
|
|
Packit |
b099d7 |
int argc;
|
|
Packit |
b099d7 |
char **argv;
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
Widget quit;
|
|
Packit |
b099d7 |
char name[80];
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
struct timeval act_time1, act_time2;
|
|
Packit |
b099d7 |
struct timezone zone_time1, zone_time2;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
infile_name[0] = '\0';
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* initialize toolkit */
|
|
Packit |
b099d7 |
CommonTestInit(argc, argv);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (UserData != NULL)
|
|
Packit |
b099d7 |
ProcessCommandArgs();
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
sprintf(name, "%s.out", argv[0]);
|
|
Packit |
b099d7 |
if ((outfp = fopen(name, "w+")) == NULL) {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
fprintf(stderr, "Can not open output file %s.out. Trying in /tmp\n",
|
|
Packit |
b099d7 |
argv[0]);
|
|
Packit |
b099d7 |
sprintf(name, "/tmp/%s.out", argv[0]);
|
|
Packit |
b099d7 |
if ((outfp = fopen(name, "w+")) == NULL) {
|
|
Packit |
b099d7 |
fprintf(stderr, "Can not open output file /tmp/%s.out. Exiting\n",
|
|
Packit |
b099d7 |
argv[0]);
|
|
Packit |
b099d7 |
exit(0);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XtNwidth, 800); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XtNheight, 500); n++;
|
|
Packit |
b099d7 |
XtSetValues(Shell1, args, n);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XtRealizeWidget(Shell1);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* create main form */
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
Form1 = XmCreateForm (Shell1, "Form1", args, n);
|
|
Packit |
b099d7 |
XtManageChild (Form1);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Read the text file into a buffer */
|
|
Packit |
b099d7 |
fill_text_buf();
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* create multi line text widget */
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNx, TEXT1_X); n++;
|
|
Packit |
b099d7 |
newfont = XLoadQueryFont(XtDisplay(Shell1),"9x15");
|
|
Packit |
b099d7 |
if (newfont != NULL) {
|
|
Packit |
b099d7 |
newfontlist = XmFontListCreate(newfont, XmSTRING_DEFAULT_CHARSET);
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNfontList, newfontlist); n++;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNcolumns, NUM_COLUMNS); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNrows, NUM_ROWS); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNeditMode, XmMULTI_LINE_EDIT); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNscrollHorizontal, False); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNeditable, False); n++;
|
|
Packit |
b099d7 |
if (word_wrap_on == True) {
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNwordWrap, True); n++;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if (show_perf_bug == True) {
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNresizeWidth, True); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNresizeHeight, True); n++;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
Text1 = XmCreateScrolledText(Form1, "Text1", args, n);
|
|
Packit |
b099d7 |
if (show_perf_bug == True) {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
gettimeofday(&act_time1, &zone_time1);
|
|
Packit |
b099d7 |
XmTextSetString(Text1, text_string);
|
|
Packit |
b099d7 |
gettimeofday(&act_time2, &zone_time2);
|
|
Packit |
b099d7 |
fprintf(outfp, "Time lapsed to set TextString before Manage : \n");
|
|
Packit |
b099d7 |
PrintLapseTime(outfp, &act_time1, &act_time2);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XtManageChild(Text1);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNx, 10); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNy, TEXT1_Y + 400); n++;
|
|
Packit |
b099d7 |
quit = XmCreatePushButtonGadget(Form1, "Quit", args, n);
|
|
Packit |
b099d7 |
XtManageChild(quit);
|
|
Packit |
b099d7 |
XtAddCallback(quit, XmNactivateCallback, quitCB, NULL);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNx, 150); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNy, TEXT1_Y + 400); n++;
|
|
Packit |
b099d7 |
if (show_perf_bug == True) {
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNsensitive, False); n++;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
fillText = XmCreatePushButtonGadget(Form1, "Fill Text", args, n);
|
|
Packit |
b099d7 |
XtManageChild(fillText);
|
|
Packit |
b099d7 |
XtAddCallback(fillText, XmNactivateCallback, fillTextCB, NULL);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNx, 300); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNy, TEXT1_Y + 400); n++;
|
|
Packit |
b099d7 |
if (show_perf_bug == False) {
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNsensitive, False); n++;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
scrollToEnd = XmCreatePushButtonGadget(Form1, "Scroll To End", args, n);
|
|
Packit |
b099d7 |
XtManageChild(scrollToEnd);
|
|
Packit |
b099d7 |
XtAddCallback(scrollToEnd, XmNactivateCallback, scrollToEndCB, NULL);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNx, 450); n++;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNy, TEXT1_Y + 400); n++;
|
|
Packit |
b099d7 |
if (show_perf_bug == False) {
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNsensitive, False); n++;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
scrollToBegin = XmCreatePushButtonGadget(Form1, "Scroll To Begin", args, n);
|
|
Packit |
b099d7 |
XtManageChild(scrollToBegin);
|
|
Packit |
b099d7 |
XtAddCallback(scrollToBegin, XmNactivateCallback, scrollToBeginCB, NULL);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (word_wrap_on == True)
|
|
Packit |
b099d7 |
fprintf(outfp, "wordWrap is ON\n");
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
fprintf(outfp, "wordWrap is OFF\n");
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XtRealizeWidget(Shell1);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
CommonPause();
|
|
Packit |
b099d7 |
CommonPause();
|
|
Packit |
b099d7 |
XtAppMainLoop(app_context);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void PrintLapseTime(fp, first,second)
|
|
Packit |
b099d7 |
FILE *fp;
|
|
Packit |
b099d7 |
struct timeval *first, *second;
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
struct timeval lapsed;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (first->tv_usec > second->tv_usec) {
|
|
Packit |
b099d7 |
second->tv_usec += 1000000;
|
|
Packit |
b099d7 |
second->tv_sec--;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
lapsed.tv_usec = second->tv_usec - first->tv_usec;
|
|
Packit |
b099d7 |
lapsed.tv_sec = second->tv_sec - first->tv_sec;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
fprintf(fp, "lapsed time = %d.%06d sec\n\n",
|
|
Packit |
b099d7 |
lapsed.tv_sec, lapsed.tv_usec%1000000);
|
|
Packit |
b099d7 |
fflush(fp);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void quitCB(w, client_data, call_data)
|
|
Packit |
b099d7 |
Widget w;
|
|
Packit |
b099d7 |
caddr_t client_data;
|
|
Packit |
b099d7 |
caddr_t call_data;
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
int i;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
XtFree(text_string);
|
|
Packit |
b099d7 |
XtDestroyWidget(Shell1);
|
|
Packit |
b099d7 |
fflush(outfp);
|
|
Packit |
b099d7 |
fclose(outfp);
|
|
Packit |
b099d7 |
exit(0);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void fillTextCB(w, client_data, call_data)
|
|
Packit |
b099d7 |
Widget w;
|
|
Packit |
b099d7 |
caddr_t client_data;
|
|
Packit |
b099d7 |
caddr_t call_data;
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
struct timeval act_time1, act_time2;
|
|
Packit |
b099d7 |
struct timezone zone_time1, zone_time2;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (Text1 == NULL)
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
fprintf(outfp, "Total Number of Lines in the textfile : %d\n\n",
|
|
Packit |
b099d7 |
total_lines);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
gettimeofday(&act_time1, &zone_time1);
|
|
Packit |
b099d7 |
XmTextSetString(Text1, text_string);
|
|
Packit |
b099d7 |
gettimeofday(&act_time2, &zone_time2);
|
|
Packit |
b099d7 |
fprintf(outfp, "Time lapsed to set TextString : \n");
|
|
Packit |
b099d7 |
PrintLapseTime(outfp, &act_time1, &act_time2);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNsensitive, True); n++;
|
|
Packit |
b099d7 |
XtSetValues(scrollToEnd, args, n);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void scrollToEndCB(w, client_data, call_data)
|
|
Packit |
b099d7 |
Widget w;
|
|
Packit |
b099d7 |
caddr_t client_data;
|
|
Packit |
b099d7 |
caddr_t call_data;
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
struct timeval act_time1, act_time2;
|
|
Packit |
b099d7 |
struct timezone zone_time1, zone_time2;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (Text1 == NULL)
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
gettimeofday(&act_time1, &zone_time1);
|
|
Packit |
b099d7 |
XmTextScroll(Text1, total_lines - NUM_ROWS);
|
|
Packit |
b099d7 |
gettimeofday(&act_time2, &zone_time2);
|
|
Packit |
b099d7 |
fprintf(outfp, "Time lapsed scrolling to end of textfile : \n");
|
|
Packit |
b099d7 |
PrintLapseTime(outfp, &act_time1, &act_time2);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNsensitive, False); n++;
|
|
Packit |
b099d7 |
XtSetValues(scrollToEnd, args, n);
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNsensitive, True); n++;
|
|
Packit |
b099d7 |
XtSetValues(scrollToBegin, args, n);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void scrollToBeginCB(w, client_data, call_data)
|
|
Packit |
b099d7 |
Widget w;
|
|
Packit |
b099d7 |
caddr_t client_data;
|
|
Packit |
b099d7 |
caddr_t call_data;
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
struct timeval act_time1, act_time2;
|
|
Packit |
b099d7 |
struct timezone zone_time1, zone_time2;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (Text1 == NULL)
|
|
Packit |
b099d7 |
return;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
gettimeofday(&act_time1, &zone_time1);
|
|
Packit |
b099d7 |
XmTextScroll(Text1, -(total_lines - NUM_ROWS));
|
|
Packit |
b099d7 |
gettimeofday(&act_time2, &zone_time2);
|
|
Packit |
b099d7 |
fprintf(outfp, "Time lapsed scrolling to beginning of textfile : \n");
|
|
Packit |
b099d7 |
PrintLapseTime(outfp, &act_time1, &act_time2);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNsensitive, False); n++;
|
|
Packit |
b099d7 |
XtSetValues(scrollToBegin, args, n);
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
XtSetArg(args[n], XmNsensitive, True); n++;
|
|
Packit |
b099d7 |
XtSetValues(scrollToEnd, args, n);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
static void fill_text_buf()
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
struct stat stat_buf;
|
|
Packit |
b099d7 |
int filesize, bytes_read;
|
|
Packit |
b099d7 |
char line[MAX_LINE_LEN + 1];
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (infile_name[0] == '\0')
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
if ( test_word_wrap )
|
|
Packit |
b099d7 |
strcpy(infile_name, DEFAULT_IN_FILE2);
|
|
Packit |
b099d7 |
else
|
|
Packit |
b099d7 |
strcpy(infile_name, DEFAULT_IN_FILE1);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
/* Read the file into a text buffer */
|
|
Packit |
b099d7 |
if ((in_fp = fopen(infile_name, "r")) == NULL) {
|
|
Packit |
b099d7 |
fprintf(stderr, "Can not open %s\n", infile_name);
|
|
Packit |
b099d7 |
exit(0);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
in_fd = fileno(in_fp);
|
|
Packit |
b099d7 |
fstat(in_fd, &stat_buf);
|
|
Packit |
b099d7 |
filesize = stat_buf.st_size;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
text_string = (char *)XtMalloc(filesize + 1);
|
|
Packit |
b099d7 |
bytes_read = fread(text_string, sizeof(char ), filesize, in_fp);
|
|
Packit |
b099d7 |
if (bytes_read != filesize) {
|
|
Packit |
b099d7 |
printf("filesize = %d bytes_read = %d\n", filesize, bytes_read);
|
|
Packit |
b099d7 |
fclose(in_fp);
|
|
Packit |
b099d7 |
exit(0);
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
*(text_string + filesize) = '\0';
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
rewind(in_fp);
|
|
Packit |
b099d7 |
while (fgets(line, MAX_LINE_LEN, in_fp) != NULL)
|
|
Packit |
b099d7 |
total_lines++;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
fclose(in_fp);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
#define WORD_LEN 32
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
ProcessCommandArgs()
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
char *user_data;
|
|
Packit |
b099d7 |
char next_word[WORD_LEN + 1];
|
|
Packit |
b099d7 |
int num_spaces;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
user_data = UserData;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
while (*user_data != '\0') {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
get_next_word(user_data, next_word, &num_spaces);
|
|
Packit |
b099d7 |
user_data += (strlen(next_word) + num_spaces);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
if (strcmp(next_word, "-f") == 0) {
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
get_next_word(user_data, next_word, &num_spaces);
|
|
Packit |
b099d7 |
user_data += (strlen(next_word) + num_spaces);
|
|
Packit |
b099d7 |
strcpy(infile_name, next_word);
|
|
Packit |
b099d7 |
continue;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if (strcmp(next_word, "-use_word_wrap") == 0) {
|
|
Packit |
b099d7 |
word_wrap_on = True;
|
|
Packit |
b099d7 |
continue;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if (strcmp(next_word, "-test_word_wrap_on") == 0) {
|
|
Packit |
b099d7 |
test_word_wrap = True;
|
|
Packit |
b099d7 |
word_wrap_on = True;
|
|
Packit |
b099d7 |
continue;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if (strcmp(next_word, "-test_word_wrap_off") == 0) {
|
|
Packit |
b099d7 |
test_word_wrap = True;
|
|
Packit |
b099d7 |
word_wrap_on = False;
|
|
Packit |
b099d7 |
continue;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
if (strcmp(next_word, "-show_perf_bug") == 0) {
|
|
Packit |
b099d7 |
show_perf_bug = True;
|
|
Packit |
b099d7 |
continue;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
free(UserData);
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
get_next_word(source, dest, spaces)
|
|
Packit |
b099d7 |
char *source;
|
|
Packit |
b099d7 |
char *dest;
|
|
Packit |
b099d7 |
int *spaces;
|
|
Packit |
b099d7 |
{
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
int n;
|
|
Packit |
b099d7 |
int space_count;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
space_count = 0;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
while (isspace(*source)) {
|
|
Packit |
b099d7 |
source++;
|
|
Packit |
b099d7 |
space_count++;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
n = 0;
|
|
Packit |
b099d7 |
while (!isspace(*source) && *source != '\0' && n < WORD_LEN) {
|
|
Packit |
b099d7 |
*dest++ = *source++;
|
|
Packit |
b099d7 |
n++;
|
|
Packit |
b099d7 |
}
|
|
Packit |
b099d7 |
*dest = '\0';
|
|
Packit |
b099d7 |
*spaces = space_count;
|
|
Packit |
b099d7 |
|
|
Packit |
b099d7 |
}
|