home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / a_utils / perl / perl5a1.lha / perl5alpha1 / do / print < prev    next >
Encoding:
Text File  |  1992-08-15  |  899 b   |  38 lines

  1. bool
  2. do_print(TARG,fp)
  3. register STR *TARG;
  4. FILE *fp;
  5. {
  6.     register char *tmps;
  7.  
  8.     if (!fp) {
  9.     if (dowarn)
  10.         warn("print to unopened file");
  11.     errno = EBADF;
  12.     return FALSE;
  13.     }
  14.     if (!TARG)
  15.     return TRUE;
  16.     if (ofmt &&
  17.       ((TARG->str_nok && TARG->str_u.str_nval != 0.0)
  18.        || (looks_like_number(TARG) && str_gnum(TARG) != 0.0) ) ) {
  19.     fprintf(fp, ofmt, TARG->str_u.str_nval);
  20.     return !ferror(fp);
  21.     }
  22.     else {
  23.     tmps = str_get(TARG);
  24.     if (*tmps == 'S' && tmps[1] == 't' && tmps[2] == 'B' && tmps[3] == '\0'
  25.       && TARG->str_cur == sizeof(STBP) && strlen(tmps) < TARG->str_cur) {
  26.         STR *tmpstr = str_mortal(&str_undef);
  27.         stab_efullname(tmpstr,((STAB*)TARG));/* a stab value, be nice */
  28.         TARG = tmpstr;
  29.         tmps = TARG->str_ptr;
  30.         putc('*',fp);
  31.     }
  32.     if (TARG->str_cur && (fwrite(tmps,1,TARG->str_cur,fp) == 0 || ferror(fp)))
  33.         return FALSE;
  34.     }
  35.     return TRUE;
  36. }
  37.  
  38.