Apple IIgs #31
Redirecting Output in APW C

Revised by Guillermo Ortiz (November 1988)
Written by Guillermo Ortiz (November 1987)

This Technical Note presents a sample program which shows how to send output to different devices under the Apple Programmer's Workshop (APW) shell.


Many programmers find the ability to redirect output an expecially useful feature. The following is a sample C program which allows this redirection through an APW shell command. Note that this is not applicable to MPW IIGS C since it is not part of the APW environment.


    /*
    redirect.c
    Testing the shell REDIRECT command within APW C
    Demonstrates how to send the output to different devices,
    a disk file, the printer, and then back to the screen
    last modified by Guillermo Ortiz 09/21/87

    NOTE: This program checks no errors whatsoever. It expects to
    be able to open the file with no problems and expects the
    printer to be readily available. 

    Also remember that for this test to work the file has to be of
    the type 'EXE' (executable from the shell only.)
    */

    #include 
    #include 
    #include 
    #include 
    #include 

    char timestrg[20];           /* string to store the ascii time */
    char myfile[80];             /* string to store the filename */
    char str[80];                /* dummy string */
    int dev=0x0001;              /* standard output */
    int app=0x0000;              /* app=0 file is deleted, other will append */

    PrintToFile()
    {
     printf("Please enter the output filename: \n");
     gets(myfile);
     if (strlen(myfile)==0) 
       {
      printf("Error in entering the filename, quit.\n");
      exit(0);
    }

     /* REDIRECT call requires pascal string */
     c2pstr(myfile);

    /* use the REDIRECT shell command to redirect the output to the file */
     REDIRECT(dev, app, myfile);

     /* now print a few lines of text */
     printf("This is my first line of text.\n");
     printf("And this is the second line.\n");
     printf("Finally the third and last line of text.\n");

    }

    PrintToPrinter()
    {
     /* now redirect to output to the .PRINTER. */
     REDIRECT(dev, app, "\010.PRINTER.");

     printf("We should now be going to the printer.\n");
     ReadAsciiTime(timestrg);
     printf ("The time now is %s\n",timestrg);
    }

    BackToScreen()
    {  
     /* Last REDIRECT the output back to the screen. */
     REDIRECT(dev, app, "\010.CONSOLE.");

     printf("The testing of REDIRECTing the output is done.\n");
     ReadAsciiTime(timestrg);
     printf ("The time now is %s\n",timestrg);
    }

    main()
    {
     ReadAsciiTime(timestrg);
     printf ("The starting time is %s\n",timestrg);

     PrintToFile();
     PrintToPrinter();
     BackToScreen();
    }

Further Reference


This and all of the other Apple II Technical Notes have been converted to HTML by Aaron Heiss as a public service to the Apple II community, with permission by Apple Computer, Inc. Any and all trademarks, registered and otherwise, are properties of their owners.