int main(int argc, char **argv) 
{
    int clientfd;
    char *host, *port, buf[MAXLINE], receive[MAXLINE];
    rio_t rio;
    char *login = "******";
    char *Complete = "RRSH COMMAND COMPLETED\n";
    char *quit = "quit\n";
    if (argc != 3) {
	fprintf(stderr, "usage: %s <host> <port>\n", argv[0]);
	exit(0);
    }
    host = argv[1];
    port = argv[2];

    clientfd = Open_clientfd(host, port);
    Rio_readinitb(&rio, clientfd);

    Fputs("Username: "******"Password: "******"\n")))
    {
	Close(clientfd);
	exit(125);
    }
    while(1)
    {
    	Fputs("rrsh> ", stdout);
	Fgets(buf, MAXLINE, stdin);
	
	if(strcmp(buf, quit) == 0)
	{
		Rio_writen(clientfd, quit, strlen(quit));
		break;
	}
		
	if(strcmp(buf, "\n") == 0)
	{
		continue;
	}
	
	Rio_writen(clientfd, buf, strlen(buf));
	Rio_readlineb(&rio, buf, MAXLINE);

	while(strcmp(buf, Complete))
	{
		Fputs(buf,stdout);
		Rio_readlineb(&rio, buf, MAXLINE);
	}
    }	 
    Close(clientfd); //line:netp:echoclient:close
    exit(0);
}
Ejemplo n.º 2
0
void 
initialize ( void ) 
{
  integer i  ;
  integer bounddefault  ;
  constcstring boundname  ;
  kpsesetprogramname ( argv [0 ], "gftype" ) ;
  kpseinitprog ( "GFTYPE" , 0 , nil , nil ) ;
  parsearguments () ;
  Fputs ( stdout ,  "This is GFtype, Version 3.1" ) ;
  fprintf ( stdout , "%s\n",  versionstring ) ;
  bounddefault = 500 ;
  boundname = "line_length" ;
  setupboundvariable ( addressof ( linelength ) , boundname , bounddefault ) ;
  bounddefault = 8191 ;
  boundname = "max_rows" ;
  setupboundvariable ( addressof ( maxrows ) , boundname , bounddefault ) ;
  bounddefault = 8191 ;
  boundname = "max_cols" ;
  setupboundvariable ( addressof ( maxcols ) , boundname , bounddefault ) ;
  {
    if ( linelength < inflinelength ) 
    linelength = inflinelength ;
    else if ( linelength > suplinelength ) 
    linelength = suplinelength ;
  } 
  if ( maxrows > 8191 ) 
  maxrows = 8191 ;
  if ( maxcols > 8191 ) 
  maxcols = 8191 ;
  imagearray = nil ;
  {register integer for_end; i = 0 ;for_end = 31 ; if ( i <= for_end) do 
    xchr [i ]= '?' ;
  while ( i++ < for_end ) ;} 
  xchr [32 ]= ' ' ;
  xchr [33 ]= '!' ;
  xchr [34 ]= '"' ;
  xchr [35 ]= '#' ;
  xchr [36 ]= '$' ;
  xchr [37 ]= '%' ;
  xchr [38 ]= '&' ;
  xchr [39 ]= '\'' ;
  xchr [40 ]= '(' ;
  xchr [41 ]= ')' ;
  xchr [42 ]= '*' ;
  xchr [43 ]= '+' ;
  xchr [44 ]= ',' ;
  xchr [45 ]= '-' ;
  xchr [46 ]= '.' ;
  xchr [47 ]= '/' ;
  xchr [48 ]= '0' ;
  xchr [49 ]= '1' ;
  xchr [50 ]= '2' ;
  xchr [51 ]= '3' ;
  xchr [52 ]= '4' ;
  xchr [53 ]= '5' ;
  xchr [54 ]= '6' ;
  xchr [55 ]= '7' ;
  xchr [56 ]= '8' ;
  xchr [57 ]= '9' ;
  xchr [58 ]= ':' ;
  xchr [59 ]= ';' ;
  xchr [60 ]= '<' ;
  xchr [61 ]= '=' ;
  xchr [62 ]= '>' ;
  xchr [63 ]= '?' ;
  xchr [64 ]= '@' ;
  xchr [65 ]= 'A' ;
  xchr [66 ]= 'B' ;
  xchr [67 ]= 'C' ;
  xchr [68 ]= 'D' ;
  xchr [69 ]= 'E' ;
  xchr [70 ]= 'F' ;
  xchr [71 ]= 'G' ;
  xchr [72 ]= 'H' ;
  xchr [73 ]= 'I' ;
  xchr [74 ]= 'J' ;
  xchr [75 ]= 'K' ;
  xchr [76 ]= 'L' ;
  xchr [77 ]= 'M' ;
  xchr [78 ]= 'N' ;
  xchr [79 ]= 'O' ;
  xchr [80 ]= 'P' ;
  xchr [81 ]= 'Q' ;
  xchr [82 ]= 'R' ;
  xchr [83 ]= 'S' ;
  xchr [84 ]= 'T' ;
  xchr [85 ]= 'U' ;
  xchr [86 ]= 'V' ;
  xchr [87 ]= 'W' ;
  xchr [88 ]= 'X' ;
  xchr [89 ]= 'Y' ;
  xchr [90 ]= 'Z' ;
  xchr [91 ]= '[' ;
  xchr [92 ]= '\\' ;
  xchr [93 ]= ']' ;
  xchr [94 ]= '^' ;
  xchr [95 ]= '_' ;
  xchr [96 ]= '`' ;
  xchr [97 ]= 'a' ;
  xchr [98 ]= 'b' ;
  xchr [99 ]= 'c' ;
  xchr [100 ]= 'd' ;
  xchr [101 ]= 'e' ;
  xchr [102 ]= 'f' ;
  xchr [103 ]= 'g' ;
  xchr [104 ]= 'h' ;
  xchr [105 ]= 'i' ;
  xchr [106 ]= 'j' ;
  xchr [107 ]= 'k' ;
  xchr [108 ]= 'l' ;
  xchr [109 ]= 'm' ;
  xchr [110 ]= 'n' ;
  xchr [111 ]= 'o' ;
  xchr [112 ]= 'p' ;
  xchr [113 ]= 'q' ;
  xchr [114 ]= 'r' ;
  xchr [115 ]= 's' ;
  xchr [116 ]= 't' ;
  xchr [117 ]= 'u' ;
  xchr [118 ]= 'v' ;
  xchr [119 ]= 'w' ;
  xchr [120 ]= 'x' ;
  xchr [121 ]= 'y' ;
  xchr [122 ]= 'z' ;
  xchr [123 ]= '{' ;
  xchr [124 ]= '|' ;
  xchr [125 ]= '}' ;
  xchr [126 ]= '~' ;
  {register integer for_end; i = 127 ;for_end = 255 ; if ( i <= for_end) do 
    xchr [i ]= '?' ;
  while ( i++ < for_end ) ;} 
  {register integer for_end; i = 0 ;for_end = 127 ; if ( i <= for_end) do 
    xord [chr ( i ) ]= 32 ;
  while ( i++ < for_end ) ;} 
  {register integer for_end; i = 32 ;for_end = 126 ; if ( i <= for_end) do 
    xord [xchr [i ]]= i ;
  while ( i++ < for_end ) ;} 
  {register integer for_end; i = 0 ;for_end = 255 ; if ( i <= for_end) do 
    charptr [i ]= -1 ;
  while ( i++ < for_end ) ;} 
  totalchars = 0 ;
  minmoverall = maxint ;
  maxmoverall = - (integer) maxint ;
  minnoverall = maxint ;
  maxnoverall = - (integer) maxint ;
} 
Ejemplo n.º 3
0
boolean 
dochar ( void ) 
{
  /* 9998 9999 */ register boolean Result; eightbits o  ;
  integer p, q  ;
  boolean aok  ;
  aok = true ;
  while ( true ) {
      
    a = curloc ;
    o = getbyte () ;
    p = firstpar ( o ) ;
    if ( eof ( gffile ) ) 
    {
      fprintf ( stderr , "%s%s%c\n",  "Bad GF file: " , "the file ended prematurely" , '!'       ) ;
      uexit ( 1 ) ;
    } 
    if ( o <= 67 ) 
    {
      if ( wantsmnemonics ) 
      Fputs ( stdout ,  " paint " ) ;
      do {
	  if ( wantsmnemonics ) { 
	  if ( paintswitch == 0 ) 
	  fprintf ( stdout , "%c%ld%c",  '(' , (long)p , ')' ) ;
	  else
	  fprintf ( stdout , "%ld",  (long)p ) ;
	} 
	m = m + p ;
	if ( m > maxmobserved ) 
	maxmobserved = m - 1 ;
	if ( wantspixels ) {
	    
	  if ( paintswitch == 1 ) {
	      
	    if ( n <= maxrow ) 
	    {
	      l = m - p ;
	      r = m - 1 ;
	      if ( r > maxcol ) 
	      r = maxcol ;
	      m = l ;
	      while ( m <= r ) {
		  
		imagearray [m + ( maxcol + 1 ) * n ]= 1 ;
		m = m + 1 ;
	      } 
	      m = l + p ;
	    } 
	  } 
	} 
	paintswitch = 1 - paintswitch ;
	a = curloc ;
	o = getbyte () ;
	p = firstpar ( o ) ;
	if ( eof ( gffile ) ) 
	{
	  fprintf ( stderr , "%s%s%c\n",  "Bad GF file: " , "the file ended prematurely" ,           '!' ) ;
	  uexit ( 1 ) ;
	} 
      } while ( ! ( o > 67 ) ) ;
    } 
    switch ( o ) 
    {case 70 : 
    case 71 : 
    case 72 : 
    case 73 : 
      {
	if ( wantsmnemonics ) 
	{
	  putc ('\n',  stdout );
	  fprintf ( stdout , "%ld%s%s%ld%c%ld",  (long)a , ": " , "skip" , (long)( o - 70 ) % 4 , ' ' , (long)p ) ;
	} 
	n = n + p + 1 ;
	m = 0 ;
	paintswitch = 0 ;
	if ( wantsmnemonics ) 
	fprintf ( stdout , "%s%ld%c",  " (n=" , (long)maxnstated - n , ')' ) ;
      } 
      break ;
    case 74 : 
    case 75 : 
    case 76 : 
    case 77 : 
    case 78 : 
    case 79 : 
    case 80 : 
    case 81 : 
    case 82 : 
    case 83 : 
    case 84 : 
    case 85 : 
    case 86 : 
    case 87 : 
    case 88 : 
    case 89 : 
    case 90 : 
    case 91 : 
    case 92 : 
    case 93 : 
    case 94 : 
    case 95 : 
    case 96 : 
    case 97 : 
    case 98 : 
    case 99 : 
    case 100 : 
    case 101 : 
    case 102 : 
    case 103 : 
    case 104 : 
    case 105 : 
    case 106 : 
    case 107 : 
    case 108 : 
    case 109 : 
    case 110 : 
    case 111 : 
    case 112 : 
    case 113 : 
    case 114 : 
    case 115 : 
    case 116 : 
    case 117 : 
    case 118 : 
    case 119 : 
    case 120 : 
    case 121 : 
    case 122 : 
    case 123 : 
    case 124 : 
    case 125 : 
    case 126 : 
    case 127 : 
    case 128 : 
    case 129 : 
    case 130 : 
    case 131 : 
    case 132 : 
    case 133 : 
    case 134 : 
    case 135 : 
    case 136 : 
    case 137 : 
      {
	if ( wantsmnemonics ) 
	{
	  putc ('\n',  stdout );
	  fprintf ( stdout , "%ld%s%s%ld",  (long)a , ": " , "newrow " , (long)p ) ;
	} 
	n = n + 1 ;
	m = p ;
	paintswitch = 1 ;
	if ( wantsmnemonics ) 
	fprintf ( stdout , "%s%ld%c",  " (n=" , (long)maxnstated - n , ')' ) ;
      } 
      break ;
    case 138 : 
    case 139 : 
    case 140 : 
    case 141 : 
    case 142 : 
    case 143 : 
    case 144 : 
    case 145 : 
    case 146 : 
    case 147 : 
    case 148 : 
    case 149 : 
    case 150 : 
    case 151 : 
    case 152 : 
    case 153 : 
    case 154 : 
    case 155 : 
    case 156 : 
    case 157 : 
    case 158 : 
    case 159 : 
    case 160 : 
    case 161 : 
    case 162 : 
    case 163 : 
    case 164 : 
    case 165 : 
    case 166 : 
    case 167 : 
    case 168 : 
    case 169 : 
    case 170 : 
    case 171 : 
    case 172 : 
    case 173 : 
    case 174 : 
    case 175 : 
    case 176 : 
    case 177 : 
    case 178 : 
    case 179 : 
    case 180 : 
    case 181 : 
    case 182 : 
    case 183 : 
    case 184 : 
    case 185 : 
    case 186 : 
    case 187 : 
    case 188 : 
    case 189 : 
    case 190 : 
    case 191 : 
    case 192 : 
    case 193 : 
    case 194 : 
    case 195 : 
    case 196 : 
    case 197 : 
    case 198 : 
    case 199 : 
    case 200 : 
    case 201 : 
      {
	if ( wantsmnemonics ) 
	{
	  putc ('\n',  stdout );
	  fprintf ( stdout , "%ld%s%s%ld",  (long)a , ": " , "newrow " , (long)p ) ;
	} 
	n = n + 1 ;
	m = p ;
	paintswitch = 1 ;
	if ( wantsmnemonics ) 
	fprintf ( stdout , "%s%ld%c",  " (n=" , (long)maxnstated - n , ')' ) ;
      } 
      break ;
    case 202 : 
    case 203 : 
    case 204 : 
    case 205 : 
    case 206 : 
    case 207 : 
    case 208 : 
    case 209 : 
    case 210 : 
    case 211 : 
    case 212 : 
    case 213 : 
    case 214 : 
    case 215 : 
    case 216 : 
    case 217 : 
    case 218 : 
    case 219 : 
    case 220 : 
    case 221 : 
    case 222 : 
    case 223 : 
    case 224 : 
    case 225 : 
    case 226 : 
    case 227 : 
    case 228 : 
    case 229 : 
    case 230 : 
    case 231 : 
    case 232 : 
    case 233 : 
    case 234 : 
    case 235 : 
    case 236 : 
    case 237 : 
    case 238 : 
      {
	if ( wantsmnemonics ) 
	{
	  putc ('\n',  stdout );
	  fprintf ( stdout , "%ld%s%s%ld",  (long)a , ": " , "newrow " , (long)p ) ;
	} 
	n = n + 1 ;
	m = p ;
	paintswitch = 1 ;
	if ( wantsmnemonics ) 
	fprintf ( stdout , "%s%ld%c",  " (n=" , (long)maxnstated - n , ')' ) ;
      } 
      break ;
    case 244 : 
      if ( wantsmnemonics ) 
      {
	putc ('\n',  stdout );
	fprintf ( stdout , "%ld%s%s",  (long)a , ": " , "no op" ) ;
      } 
      break ;
    case 247 : 
      {
	{
	  fprintf ( stdout , "%ld%s%s%s",  (long)a , ": " , "! " ,           "preamble command within a character!" ) ;
	  putc ('\n',  stdout );
	} 
	goto lab9998 ;
      } 
      break ;
    case 248 : 
    case 249 : 
      {
	{
	  fprintf ( stdout , "%ld%s%s%s",  (long)a , ": " , "! " ,           "postamble command within a character!" ) ;
	  putc ('\n',  stdout );
	} 
	goto lab9998 ;
      } 
      break ;
    case 67 : 
    case 68 : 
      {
	{
	  fprintf ( stdout , "%ld%s%s%s",  (long)a , ": " , "! " , "boc occurred before eoc!" ) ;
	  putc ('\n',  stdout );
	} 
	goto lab9998 ;
      } 
      break ;
    case 69 : 
      {
	if ( wantsmnemonics ) 
	{
	  putc ('\n',  stdout );
	  fprintf ( stdout , "%ld%s%s",  (long)a , ": " , "eoc" ) ;
	} 
	putc ('\n',  stdout );
	goto lab9999 ;
      } 
      break ;
    case 239 : 
    case 240 : 
    case 241 : 
    case 242 : 
      {
	if ( wantsmnemonics ) 
	{
	  putc ('\n',  stdout );
	  fprintf ( stdout , "%ld%s%s",  (long)a , ": " , "xxx '" ) ;
	} 
	badchar = false ;
	b = 16 ;
	if ( p < 0 ) 
	{
	  putc ('\n',  stdout );
	  fprintf ( stdout , "%ld%s%s%s",  (long)a , ": " , "! " , "string of negative length!" ) ;
	  putc ('\n',  stdout );
	} 
	while ( p > 0 ) {
	    
	  q = getbyte () ;
	  if ( ( q < 32 ) || ( q > 126 ) ) 
	  badchar = true ;
	  if ( wantsmnemonics ) 
	  {
	    putc ( xchr [q ],  stdout );
	    if ( b < linelength ) 
	    b = b + 1 ;
	    else {
		
	      putc ('\n',  stdout );
	      b = 2 ;
	    } 
	  } 
	  p = p - 1 ;
	} 
	if ( wantsmnemonics ) 
	putc ( '\'' ,  stdout );
	if ( badchar ) 
	{
	  putc ('\n',  stdout );
	  fprintf ( stdout , "%ld%s%s%s",  (long)a , ": " , "! " ,           "non-ASCII character in xxx command!" ) ;
	  putc ('\n',  stdout );
	} 
      } 
      break ;
    case 243 : 
      {
	if ( wantsmnemonics ) 
	{
	  putc ('\n',  stdout );
	  fprintf ( stdout , "%ld%s%s%ld%s",  (long)a , ": " , "yyy " , (long)p , " (" ) ;
	} 
	if ( wantsmnemonics ) 
	{
	  printscaled ( p ) ;
	  putc ( ')' ,  stdout );
	} 
      } 
      break ;
      default: 
      {
	fprintf ( stdout , "%ld%s%s%s%ld%c",  (long)a , ": " , "! " , "undefined command " , (long)o , '!' ) ;
	putc ('\n',  stdout );
      } 
      break ;
    } 
  } 
  lab9998: { putc ( '!' ,  stdout );  putc ( '\n',  stdout ); }
  aok = false ;
  lab9999: Result = aok ;
  return Result ;
} 
Ejemplo n.º 4
0
  /* 10 */ smallnumber c  ;
  c = curmod ;
  if ( jobname == 0 ) 
  openlogfile () ;
  while ( inputptr > 0 ) if ( ( curinput .indexfield > 15 ) ) 
  endtokenlist () ;
  else endfilereading () ;
  while ( loopptr != 0 ) stopiteration () ;
  while ( openparens > 0 ) {
      
    print ( 1078 ) ;
    decr ( openparens ) ;
  } 
  while ( condptr != 0 ) {
      
    printnl ( 1079 ) ;
    printcmdmod ( 2 , curif ) ;
    if ( ifline != 0 ) 
    {
      print ( 1080 ) ;
      printint ( ifline ) ;
    } 
    print ( 1081 ) ;
    ifline = mem [condptr + 1 ].cint ;
    curif = mem [condptr ].hhfield .b1 ;
    loopptr = condptr ;
    condptr = mem [condptr ].hhfield .v.RH ;
    freenode ( loopptr , 2 ) ;
  } 
  if ( history != 0 ) {
      
    if ( ( ( history == 1 ) || ( interaction < 3 ) ) ) {
	
      if ( selector == 3 ) 
      {
	selector = 1 ;
	printnl ( 1082 ) ;
	selector = 3 ;
      } 
    } 
  } 
  if ( c == 1 ) 
  {
	;
#ifdef INIMF
    if ( iniversion ) 
    {
      storebasefile () ;
      goto lab10 ;
    } 
#endif /* INIMF */
    printnl ( 1083 ) ;
    goto lab10 ;
  } 
  lab10: ;
} 
#ifdef INIMF
void 
initprim ( void ) 
{
  primitive ( 409 , 41 , 1 ) ;
  primitive ( 410 , 41 , 2 ) ;
  primitive ( 411 , 41 , 3 ) ;
  primitive ( 412 , 41 , 4 ) ;
  primitive ( 413 , 41 , 5 ) ;
  primitive ( 414 , 41 , 6 ) ;
  primitive ( 415 , 41 , 7 ) ;
  primitive ( 416 , 41 , 8 ) ;
  primitive ( 417 , 41 , 9 ) ;
  primitive ( 418 , 41 , 10 ) ;
  primitive ( 419 , 41 , 11 ) ;
  primitive ( 420 , 41 , 12 ) ;
  primitive ( 421 , 41 , 13 ) ;
  primitive ( 422 , 41 , 14 ) ;
  primitive ( 423 , 41 , 15 ) ;
  primitive ( 424 , 41 , 16 ) ;
  primitive ( 425 , 41 , 17 ) ;
  primitive ( 426 , 41 , 18 ) ;
  primitive ( 427 , 41 , 19 ) ;
  primitive ( 428 , 41 , 20 ) ;
  primitive ( 429 , 41 , 21 ) ;
  primitive ( 430 , 41 , 22 ) ;
  primitive ( 431 , 41 , 23 ) ;
  primitive ( 432 , 41 , 24 ) ;
  primitive ( 433 , 41 , 25 ) ;
  primitive ( 434 , 41 , 26 ) ;
  primitive ( 435 , 41 , 27 ) ;
  primitive ( 436 , 41 , 28 ) ;
  primitive ( 437 , 41 , 29 ) ;
  primitive ( 438 , 41 , 30 ) ;
  primitive ( 439 , 41 , 31 ) ;
  primitive ( 440 , 41 , 32 ) ;
  primitive ( 441 , 41 , 33 ) ;
  primitive ( 442 , 41 , 34 ) ;
  primitive ( 443 , 41 , 35 ) ;
  primitive ( 444 , 41 , 36 ) ;
  primitive ( 445 , 41 , 37 ) ;
  primitive ( 446 , 41 , 38 ) ;
  primitive ( 447 , 41 , 39 ) ;
  primitive ( 448 , 41 , 40 ) ;
  primitive ( 449 , 41 , 41 ) ;
  primitive ( 408 , 48 , 0 ) ;
  primitive ( 91 , 64 , 0 ) ;
  eqtb [9760 ]= eqtb [cursym ];
  primitive ( 93 , 65 , 0 ) ;
  primitive ( 125 , 66 , 0 ) ;
  primitive ( 123 , 47 , 0 ) ;
  primitive ( 58 , 82 , 0 ) ;
  eqtb [9762 ]= eqtb [cursym ];
  primitive ( 459 , 81 , 0 ) ;
  primitive ( 460 , 80 , 0 ) ;
  primitive ( 461 , 78 , 0 ) ;
  primitive ( 44 , 83 , 0 ) ;
  primitive ( 59 , 84 , 0 ) ;
  eqtb [9763 ]= eqtb [cursym ];
  primitive ( 92 , 7 , 0 ) ;
  primitive ( 462 , 19 , 0 ) ;
  primitive ( 463 , 73 , 0 ) ;
  primitive ( 464 , 60 , 0 ) ;
  primitive ( 465 , 33 , 0 ) ;
  bgloc = cursym ;
  primitive ( 466 , 58 , 0 ) ;
  primitive ( 467 , 20 , 0 ) ;
  primitive ( 468 , 61 , 0 ) ;
  primitive ( 469 , 28 , 0 ) ;
  primitive ( 470 , 12 , 0 ) ;
  primitive ( 453 , 85 , 0 ) ;
  eqtb [9767 ]= eqtb [cursym ];
  egloc = cursym ;
  primitive ( 471 , 27 , 0 ) ;
  primitive ( 472 , 6 , 0 ) ;
  primitive ( 473 , 10 , 0 ) ;
  primitive ( 474 , 71 , 0 ) ;
  primitive ( 475 , 74 , 0 ) ;
  primitive ( 476 , 14 , 0 ) ;
  primitive ( 477 , 15 , 0 ) ;
  primitive ( 478 , 16 , 0 ) ;
  primitive ( 479 , 70 , 0 ) ;
  primitive ( 480 , 29 , 0 ) ;
  primitive ( 481 , 25 , 0 ) ;
  primitive ( 482 , 9 , 0 ) ;
  primitive ( 483 , 13 , 0 ) ;
  primitive ( 484 , 8 , 0 ) ;
  primitive ( 485 , 18 , 0 ) ;
  primitive ( 486 , 79 , 0 ) ;
  primitive ( 487 , 75 , 0 ) ;
  primitive ( 488 , 36 , 0 ) ;
  primitive ( 489 , 59 , 0 ) ;
  primitive ( 490 , 72 , 0 ) ;
  primitive ( 491 , 76 , 0 ) ;
  primitive ( 656 , 17 , 1 ) ;
  primitive ( 657 , 17 , 2 ) ;
  primitive ( 658 , 17 , 54 ) ;
  primitive ( 659 , 17 , 45 ) ;
  primitive ( 660 , 17 , 50 ) ;
  primitive ( 454 , 17 , 0 ) ;
  eqtb [9765 ]= eqtb [cursym ];
  primitive ( 661 , 4 , 9770 ) ;
  primitive ( 662 , 4 , 9920 ) ;
  primitive ( 663 , 4 , 1 ) ;
  primitive ( 455 , 4 , 0 ) ;
  eqtb [9764 ]= eqtb [cursym ];
  primitive ( 664 , 62 , 0 ) ;
  primitive ( 665 , 62 , 1 ) ;
  primitive ( 64 , 62 , 2 ) ;
  primitive ( 666 , 62 , 3 ) ;
  primitive ( 677 , 57 , 9770 ) ;
  primitive ( 678 , 57 , 9920 ) ;
  primitive ( 679 , 57 , 10070 ) ;
  primitive ( 680 , 57 , 1 ) ;
  primitive ( 681 , 57 , 2 ) ;
  primitive ( 682 , 57 , 3 ) ;
  primitive ( 692 , 3 , 0 ) ;
  primitive ( 618 , 3 , 1 ) ;
  primitive ( 719 , 1 , 1 ) ;
  primitive ( 452 , 2 , 2 ) ;
  eqtb [9766 ]= eqtb [cursym ];
  primitive ( 720 , 2 , 3 ) ;
  primitive ( 721 , 2 , 4 ) ;
  primitive ( 347 , 34 , 30 ) ;
  primitive ( 348 , 34 , 31 ) ;
  primitive ( 349 , 34 , 32 ) ;
  primitive ( 350 , 34 , 33 ) ;
  primitive ( 351 , 34 , 34 ) ;
  primitive ( 352 , 34 , 35 ) ;
  primitive ( 353 , 34 , 36 ) ;
  primitive ( 354 , 34 , 37 ) ;
  primitive ( 355 , 35 , 38 ) ;
  primitive ( 356 , 35 , 39 ) ;
  primitive ( 357 , 35 , 40 ) ;
  primitive ( 358 , 35 , 41 ) ;
  primitive ( 359 , 35 , 42 ) ;
  primitive ( 360 , 35 , 43 ) ;
  primitive ( 361 , 35 , 44 ) ;
  primitive ( 362 , 35 , 45 ) ;
  primitive ( 363 , 35 , 46 ) ;
  primitive ( 364 , 35 , 47 ) ;
  primitive ( 365 , 35 , 48 ) ;
  primitive ( 366 , 35 , 49 ) ;
  primitive ( 367 , 35 , 50 ) ;
  primitive ( 368 , 35 , 51 ) ;
  primitive ( 369 , 35 , 52 ) ;
  primitive ( 370 , 35 , 53 ) ;
  primitive ( 371 , 35 , 54 ) ;
  primitive ( 372 , 35 , 55 ) ;
  primitive ( 373 , 35 , 56 ) ;
  primitive ( 374 , 35 , 57 ) ;
  primitive ( 375 , 35 , 58 ) ;
  primitive ( 376 , 35 , 59 ) ;
  primitive ( 377 , 35 , 60 ) ;
  primitive ( 378 , 35 , 61 ) ;
  primitive ( 379 , 35 , 62 ) ;
  primitive ( 380 , 35 , 63 ) ;
  primitive ( 381 , 35 , 64 ) ;
  primitive ( 382 , 35 , 65 ) ;
  primitive ( 383 , 35 , 66 ) ;
  primitive ( 384 , 35 , 67 ) ;
  primitive ( 385 , 37 , 68 ) ;
  primitive ( 43 , 44 , 69 ) ;
  primitive ( 45 , 44 , 70 ) ;
  primitive ( 42 , 56 , 71 ) ;
  primitive ( 47 , 55 , 72 ) ;
  eqtb [9761 ]= eqtb [cursym ];
  primitive ( 386 , 46 , 73 ) ;
  primitive ( 310 , 46 , 74 ) ;
  primitive ( 388 , 53 , 76 ) ;
  primitive ( 387 , 46 , 75 ) ;
  primitive ( 60 , 51 , 77 ) ;
  primitive ( 389 , 51 , 78 ) ;
  primitive ( 62 , 51 , 79 ) ;
  primitive ( 390 , 51 , 80 ) ;
  primitive ( 61 , 52 , 81 ) ;
  primitive ( 391 , 51 , 82 ) ;
  primitive ( 401 , 38 , 94 ) ;
  primitive ( 402 , 38 , 95 ) ;
  primitive ( 403 , 38 , 96 ) ;
  primitive ( 404 , 38 , 97 ) ;
  primitive ( 405 , 38 , 98 ) ;
  primitive ( 406 , 38 , 99 ) ;
  primitive ( 407 , 38 , 100 ) ;
  primitive ( 38 , 49 , 83 ) ;
  primitive ( 392 , 56 , 84 ) ;
  primitive ( 393 , 56 , 85 ) ;
  primitive ( 394 , 56 , 86 ) ;
  primitive ( 395 , 56 , 87 ) ;
  primitive ( 396 , 56 , 88 ) ;
  primitive ( 397 , 56 , 89 ) ;
  primitive ( 398 , 56 , 90 ) ;
  primitive ( 399 , 56 , 91 ) ;
  primitive ( 400 , 46 , 92 ) ;
  primitive ( 340 , 31 , 15 ) ;
  primitive ( 326 , 31 , 4 ) ;
  primitive ( 324 , 31 , 2 ) ;
  primitive ( 331 , 31 , 9 ) ;
  primitive ( 328 , 31 , 6 ) ;
  primitive ( 333 , 31 , 11 ) ;
  primitive ( 335 , 31 , 13 ) ;
  primitive ( 336 , 31 , 14 ) ;
  primitive ( 913 , 86 , 0 ) ;
  primitive ( 914 , 86 , 1 ) ;
  primitive ( 273 , 24 , 0 ) ;
  primitive ( 274 , 24 , 1 ) ;
  primitive ( 275 , 24 , 2 ) ;
  primitive ( 920 , 24 , 3 ) ;
  primitive ( 921 , 22 , 0 ) ;
  primitive ( 922 , 22 , 1 ) ;
  primitive ( 936 , 23 , 0 ) ;
  primitive ( 937 , 23 , 1 ) ;
  primitive ( 938 , 23 , 2 ) ;
  primitive ( 939 , 23 , 3 ) ;
  primitive ( 940 , 23 , 4 ) ;
  primitive ( 957 , 69 , 1 ) ;
  primitive ( 958 , 69 , 0 ) ;
  primitive ( 959 , 69 , 2 ) ;
  primitive ( 960 , 67 , 6 ) ;
  primitive ( 961 , 67 , 16 ) ;
  primitive ( 962 , 68 , 0 ) ;
  primitive ( 963 , 68 , 1 ) ;
  primitive ( 993 , 26 , 0 ) ;
  primitive ( 994 , 26 , 1 ) ;
  primitive ( 995 , 26 , 2 ) ;
  primitive ( 1005 , 21 , 0 ) ;
  primitive ( 1006 , 21 , 1 ) ;
  primitive ( 1007 , 21 , 2 ) ;
  primitive ( 1008 , 21 , 3 ) ;
  primitive ( 1009 , 21 , 4 ) ;
  primitive ( 1027 , 77 , 0 ) ;
  primitive ( 1028 , 77 , 1 ) ;
  primitive ( 1029 , 77 , 5 ) ;
  primitive ( 1030 , 77 , 2 ) ;
  primitive ( 1031 , 77 , 6 ) ;
  primitive ( 1032 , 77 , 3 ) ;
  primitive ( 1033 , 77 , 7 ) ;
  primitive ( 1034 , 77 , 11 ) ;
  primitive ( 1035 , 77 , 128 ) ;
  primitive ( 1060 , 30 , 4 ) ;
  primitive ( 1061 , 30 , 16 ) ;
} 
void 
inittab ( void ) 
{
  integer k  ;
  rover = 23 ;
  mem [rover ].hhfield .v.RH = 268435455L ;
  mem [rover ].hhfield .lhfield = 1000 ;
  mem [rover + 1 ].hhfield .lhfield = rover ;
  mem [rover + 1 ].hhfield .v.RH = rover ;
  lomemmax = rover + 1000 ;
  mem [lomemmax ].hhfield .v.RH = 0 ;
  mem [lomemmax ].hhfield .lhfield = 0 ;
  {register integer for_end; k = memtop - 2 ;for_end = memtop ; if ( k <= 
  for_end) do 
    mem [k ]= mem [lomemmax ];
  while ( k++ < for_end ) ;} 
  avail = 0 ;
  memend = memtop ;
  himemmin = memtop - 2 ;
  varused = 23 ;
  dynused = memtop + 1 - himemmin ;
  intname [1 ]= 409 ;
  intname [2 ]= 410 ;
  intname [3 ]= 411 ;
  intname [4 ]= 412 ;
  intname [5 ]= 413 ;
  intname [6 ]= 414 ;
  intname [7 ]= 415 ;
  intname [8 ]= 416 ;
  intname [9 ]= 417 ;
  intname [10 ]= 418 ;
  intname [11 ]= 419 ;
  intname [12 ]= 420 ;
  intname [13 ]= 421 ;
  intname [14 ]= 422 ;
  intname [15 ]= 423 ;
  intname [16 ]= 424 ;
  intname [17 ]= 425 ;
  intname [18 ]= 426 ;
  intname [19 ]= 427 ;
  intname [20 ]= 428 ;
  intname [21 ]= 429 ;
  intname [22 ]= 430 ;
  intname [23 ]= 431 ;
  intname [24 ]= 432 ;
  intname [25 ]= 433 ;
  intname [26 ]= 434 ;
  intname [27 ]= 435 ;
  intname [28 ]= 436 ;
  intname [29 ]= 437 ;
  intname [30 ]= 438 ;
  intname [31 ]= 439 ;
  intname [32 ]= 440 ;
  intname [33 ]= 441 ;
  intname [34 ]= 442 ;
  intname [35 ]= 443 ;
  intname [36 ]= 444 ;
  intname [37 ]= 445 ;
  intname [38 ]= 446 ;
  intname [39 ]= 447 ;
  intname [40 ]= 448 ;
  intname [41 ]= 449 ;
  hashused = 9757 ;
  stcount = 0 ;
  hash [9768 ].v.RH = 451 ;
  hash [9766 ].v.RH = 452 ;
  hash [9767 ].v.RH = 453 ;
  hash [9765 ].v.RH = 454 ;
  hash [9764 ].v.RH = 455 ;
  hash [9763 ].v.RH = 59 ;
  hash [9762 ].v.RH = 58 ;
  hash [9761 ].v.RH = 47 ;
  hash [9760 ].v.RH = 91 ;
  hash [9759 ].v.RH = 41 ;
  hash [9757 ].v.RH = 456 ;
  eqtb [9759 ].lhfield = 63 ;
  mem [19 ].hhfield .lhfield = 9770 ;
  mem [19 ].hhfield .v.RH = 0 ;
  mem [memtop ].hhfield .lhfield = 268435455L ;
  mem [3 ].hhfield .lhfield = 0 ;
  mem [3 ].hhfield .v.RH = 0 ;
  mem [4 ].hhfield .lhfield = 1 ;
  mem [4 ].hhfield .v.RH = 0 ;
  {register integer for_end; k = 5 ;for_end = 11 ; if ( k <= for_end) do 
    mem [k ]= mem [4 ];
  while ( k++ < for_end ) ;} 
  mem [12 ].cint = 0 ;
  mem [0 ].hhfield .v.RH = 0 ;
  mem [0 ].hhfield .lhfield = 0 ;
  mem [1 ].cint = 0 ;
  mem [2 ].cint = 0 ;
  serialno = 0 ;
  mem [13 ].hhfield .v.RH = 13 ;
  mem [14 ].hhfield .lhfield = 13 ;
  mem [13 ].hhfield .lhfield = 0 ;
  mem [14 ].hhfield .v.RH = 0 ;
  mem [21 ].hhfield .b1 = 0 ;
  mem [21 ].hhfield .v.RH = 9768 ;
  eqtb [9768 ].v.RH = 21 ;
  eqtb [9768 ].lhfield = 42 ;
  eqtb [9758 ].lhfield = 92 ;
  hash [9758 ].v.RH = 736 ;
  mem [17 ].hhfield .b1 = 11 ;
  mem [20 ].cint = 1073741824L ;
  mem [16 ].cint = 0 ;
  mem [15 ].hhfield .lhfield = 0 ;
  if ( iniversion ) 
  baseident = 1070 ;
} 
#endif /* INIMF */
void mainbody( void ) {
    
  bounddefault = 250000L ;
  boundname = "main_memory" ;
  setupboundvariable ( addressof ( mainmemory ) , boundname , bounddefault ) ;
  bounddefault = 3000 ;
  boundname = "buf_size" ;
  setupboundvariable ( addressof ( bufsize ) , boundname , bounddefault ) ;
  bounddefault = 79 ;
  boundname = "error_line" ;
  setupboundvariable ( addressof ( errorline ) , boundname , bounddefault ) ;
  bounddefault = 50 ;
  boundname = "half_error_line" ;
  setupboundvariable ( addressof ( halferrorline ) , boundname , bounddefault 
  ) ;
  bounddefault = 79 ;
  boundname = "max_print_line" ;
  setupboundvariable ( addressof ( maxprintline ) , boundname , bounddefault ) 
  ;
  bounddefault = 768 ;
  boundname = "screen_width" ;
  setupboundvariable ( addressof ( screenwidth ) , boundname , bounddefault ) 
  ;
  bounddefault = 1024 ;
  boundname = "screen_depth" ;
  setupboundvariable ( addressof ( screendepth ) , boundname , bounddefault ) 
  ;
  bounddefault = 16384 ;
  boundname = "gf_buf_size" ;
  setupboundvariable ( addressof ( gfbufsize ) , boundname , bounddefault ) ;
  if ( errorline > 255 ) 
  errorline = 255 ;
  if ( screenwidth > 32767 ) 
  screenwidth = 32767 ;
  if ( screendepth > 32767 ) 
  screendepth = 32767 ;
  {
    if ( mainmemory < infmainmemory ) 
    mainmemory = infmainmemory ;
    else if ( mainmemory > supmainmemory ) 
    mainmemory = supmainmemory ;
  } 
  memtop = 0 + mainmemory - 1 ;
  memmax = memtop ;
  {
    if ( bufsize < infbufsize ) 
    bufsize = infbufsize ;
    else if ( bufsize > supbufsize ) 
    bufsize = supbufsize ;
  } 
  buffer = xmallocarray ( ASCIIcode , bufsize ) ;
  rowtransition = xmallocarray ( screencol , screenwidth ) ;
  gfbuf = xmallocarray ( eightbits , gfbufsize ) ;
  sourcefilenamestack = xmallocarray ( strnumber , 15 ) ;
  fullsourcefilenamestack = xmallocarray ( strnumber , 15 ) ;
#ifdef INIMF
  if ( iniversion ) 
  {
    mem = xmallocarray ( memoryword , memtop + 1 ) ;
  } 
#endif /* INIMF */
  mfluabeginprogram () ;
  history = 3 ;
  if ( readyalready == 314159L ) 
  goto lab1 ;
  bad = 0 ;
  if ( ( halferrorline < 30 ) || ( halferrorline > errorline - 15 ) ) 
  bad = 1 ;
  if ( maxprintline < 60 ) 
  bad = 2 ;
  if ( gfbufsize % 8 != 0 ) 
  bad = 3 ;
  if ( 1100 > memtop ) 
  bad = 4 ;
  if ( 7919 > 9500 ) 
  bad = 5 ;
  if ( headersize % 4 != 0 ) 
  bad = 6 ;
  if ( ( ligtablesize < 255 ) || ( ligtablesize > 32510 ) ) 
  bad = 7 ;
#ifdef INIMF
  if ( memmax != memtop ) 
  bad = 10 ;
#endif /* INIMF */
  if ( memmax < memtop ) 
  bad = 10 ;
  if ( ( 0 > 0 ) || ( 255 < 127 ) ) 
  bad = 11 ;
  if ( ( 0 > 0 ) || ( 268435455L < 32767 ) ) 
  bad = 12 ;
  if ( ( 0 < 0 ) || ( 255 > 268435455L ) ) 
  bad = 13 ;
  if ( ( 0 < 0 ) || ( memmax >= 268435455L ) ) 
  bad = 14 ;
  if ( maxstrings > 268435455L ) 
  bad = 15 ;
  if ( bufsize > 268435455L ) 
  bad = 16 ;
  if ( ( 255 < 255 ) || ( 268435455L < 65535L ) ) 
  bad = 17 ;
  if ( 9769 + maxinternal > 268435455L ) 
  bad = 21 ;
  if ( 10220 > 268435455L ) 
  bad = 22 ;
  if ( 15 * 11 > bistacksize ) 
  bad = 31 ;
  if ( 20 + 17 * 45 > bistacksize ) 
  bad = 32 ;
  if ( basedefaultlength > maxint ) 
  bad = 41 ;
  if ( bad > 0 ) 
  {
    fprintf ( stdout , "%s%s%ld\n",  "Ouch---my internal constants have been clobbered!" ,     "---case " , (long)bad ) ;
    goto lab9999 ;
  } 
  initialize () ;
#ifdef INIMF
  if ( iniversion ) 
  {
    if ( ! getstringsstarted () ) 
    goto lab9999 ;
    inittab () ;
    initprim () ;
    initstrptr = strptr ;
    initpoolptr = poolptr ;
    maxstrptr = strptr ;
    maxpoolptr = poolptr ;
    fixdateandtime () ;
  } 
#endif /* INIMF */
  readyalready = 314159L ;
  mfluaPREstartofMF () ;
  lab1: selector = 1 ;
  tally = 0 ;
  termoffset = 0 ;
  fileoffset = 0 ;
  fprintf ( stdout , "%s%s",  "This is MFLua, Version 2.7182818" , "-0.5" ) ;
  Fputs ( stdout ,  versionstring ) ;
  if ( baseident == 0 ) 
  fprintf ( stdout , "%s%s%c\n",  " (preloaded base=" , dumpname , ')' ) ;
  else {
      
    slowprint ( baseident ) ;
    println () ;
  } 
  if ( translatefilename ) 
  {
    putc ( '(' ,  stdout );
    fputs ( translatefilename , stdout ) ;
    { putc ( ')' ,  stdout );  putc ( '\n',  stdout ); }
  } 
  fflush ( stdout ) ;
  jobname = 0 ;
  logopened = false ;
  outputfilename = 0 ;
  {
    {
      inputptr = 0 ;
      maxinstack = 0 ;
      inopen = 0 ;
      openparens = 0 ;
      maxbufstack = 0 ;
      paramptr = 0 ;
      maxparamstack = 0 ;
      first = 1 ;
      curinput .startfield = 1 ;
      curinput .indexfield = 0 ;
      line = 0 ;
      curinput .namefield = 0 ;
      forceeof = false ;
      if ( ! initterminal () ) 
      goto lab9999 ;
      curinput .limitfield = last ;
      first = last + 1 ;
    } 
    scannerstatus = 0 ;
    if ( ( baseident == 0 ) || ( buffer [curinput .locfield ]== 38 ) ) 
    {
      if ( baseident != 0 ) 
      initialize () ;
      if ( ! openbasefile () ) 
      goto lab9999 ;
      if ( ! loadbasefile () ) 
      {
	wclose ( basefile ) ;
	goto lab9999 ;
      } 
      wclose ( basefile ) ;
      while ( ( curinput .locfield < curinput .limitfield ) && ( buffer [
      curinput .locfield ]== 32 ) ) incr ( curinput .locfield ) ;
    } 
    buffer [curinput .limitfield ]= 37 ;
    fixdateandtime () ;
    initrandoms ( ( internal [17 ]/ 65536L ) + internal [16 ]) ;
    if ( interaction == 0 ) 
    selector = 0 ;
    else selector = 1 ;
    if ( curinput .locfield < curinput .limitfield ) {
	
      if ( buffer [curinput .locfield ]!= 92 ) 
      startinput () ;
    } 
  } 
  history = 0 ;
  mfluainitialize () ;
  if ( startsym > 0 ) 
  {
    cursym = startsym ;
    backinput () ;
  } 
  mfluaPREmaincontrol () ;
  maincontrol () ;
  mfluaPOSTmaincontrol () ;
  finalcleanup () ;
  mfluaPOSTfinalcleanup () ;
  closefilesandterminate () ;
  lab9999: {
      
    fflush ( stdout ) ;
    readyalready = 0 ;
    if ( ( history != 0 ) && ( history != 1 ) ) 
    uexit ( 1 ) ;
    else uexit ( 0 ) ;
  } 
} 
	static void *timesel(void *arg)/* Time Thread*/
    {
        int     connfd,maxifdp,nwrite,selready,nread,fileflags;
		char				buff[MAXLINE],receivedata[MAXLINE];
        time_t				ticks;
        struct timeval timeinv;
		fd_set resetsel;
		
		connfd = *((int *) arg);
		free(arg);
		
        Pthread_detach(pthread_self());/* Detach Thread*/
		 
	    FD_ZERO(&resetsel);
		
        while(1)
		{
			ticks = time(NULL);
			snprintf(buff, sizeof(buff), "%.24s\r\n", ctime(&ticks));
			nwrite=write(connfd, buff, strlen(buff));/* Write time to client*/
		
			if(nwrite<0&& errno == EPIPE)	/*Handling Write Error due to EPIPE */	
			{
				Fputs("Time Client termination:EPIPE error detected\n", stdout); 
				Close(connfd);
				return;
			}
			else if (nwrite<0 && errno == EINTR)/*Handling Write Error due to EINTR */	
			{ 
				continue;
			} 
			else if (nwrite<0)/*Handling Write Error */	
			{
				Fputs(" Time Client termination:Write Error Detected,error occured due to\n", stdout); 
				Fputs(strerror(errno),stdout);  
				Fputs("\n",stdout);
				Close(connfd);
				return;
			}
				
			FD_SET(connfd, &resetsel);
			timeinv.tv_sec = 5;
			timeinv.tv_usec = 0;
			maxifdp = connfd +  1;
			selready= select(maxifdp,  &resetsel,  NULL,  NULL,&timeinv);/*sleeping for 5 secs using select*/
			if(selready== -1)
			{
				err_sys("Select has failed\n");
			}

			if (FD_ISSET(connfd,  &resetsel))/* is Connection readable */
			{  
				if ( (nread=Read(connfd, receivedata, MAXLINE)) == 0)/*Handling Client Termination  */	
                { 
					Fputs(" Time Client termination:socket read returned with value 0\n", stdout); 
					Close(connfd);
					return;
                }
				else if(nread<0) /*Handling read Error */	
				{
				    Fputs("Time Client termination:socket read returned with value -1,error occured due to\n", stdout); 
					Fputs(strerror(errno),stdout);  
					Fputs("\n",stdout);
					Close(connfd);
					return;
		 		}
			}
         	 
	    }

		 
			Close(connfd);             
			return (NULL);

        
    }
 int main(int argc, char **argv)
  {  
	int  echosockfd,timesockfd ,connfd,*conptr,pollready,selready;
	int rset;
	pthread_t th;
    socklen_t clilen,len;
    struct sockaddr_in cliaddr, servaddr;
    struct pollfd client[2];
	int fileflags;
	char str[INET_ADDRSTRLEN];
	  
     rset=1;// for setsockopt() to select SO_REUSEADr 
	   
	if((timesockfd = socket(AF_INET, SOCK_STREAM, 0))== -1)/* Time Socket creation */
	{
		err_quit(" Time socket Error\n");
	}
	if((echosockfd = socket(AF_INET, SOCK_STREAM, 0))== -1)/* Echo Socket creation */
	{
		err_quit(" Echo socket Error\n");
	}
	
    setsockopt(timesockfd, SOL_SOCKET, SO_REUSEADDR,&rset, sizeof(int));
	setsockopt(echosockfd, SOL_SOCKET, SO_REUSEADDR,&rset, sizeof(int));
	 
    bzero(&servaddr, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_addr.s_addr = htonl (INADDR_ANY);
     
	servaddr.sin_port = htons (11433);
    Bind(timesockfd, (SA *) &servaddr, sizeof(servaddr));/*Bind Time Socket*/
   	Listen(timesockfd, LISTENQ);/*Listen for Time clients*/
	 
	servaddr.sin_port = htons (11432);
    Bind(echosockfd, (SA *) &servaddr, sizeof(servaddr));/*Bind Time Socket*/
    Listen(echosockfd, LISTENQ);/*Listen for Echo clients*/
	 
	signal(SIGPIPE,SIG_IGN);/*Handling SIGPIPE */ 
    Fputs("Server Waiting For Connections.....\n", stdout);
    for(;;)
	{
		 
		client[0].fd =timesockfd ;
		client[0].events =POLLRDNORM; 

		client[1].fd =echosockfd ;
		client[1].events =POLLRDNORM;
		  
		pollready=poll(client,3,NULL);
		if(pollready== -1)
		{
			err_sys("Poll has failed");
		}
		if (client[0].revents & POLLRDNORM)
		{
			conptr = Malloc(sizeof(int));
			*conptr = Accept(timesockfd, (SA *) NULL,NULL);/*Accept connection form time client*/
			Fputs("Connection formed between a Time client with the server\n",stdout);
			Pthread_create(&th, NULL, &timesel, conptr);/*creation of Thread*/
		}
		 
	    if (client[1].revents & POLLRDNORM)
		{
			clilen = sizeof(cliaddr);
			conptr = Malloc(sizeof(int));
			*conptr = Accept(echosockfd, (SA *) &cliaddr, &clilen);/*Accept connection form Echo client*/
			Fputs("Connection formed between a Echo client with the server\n",stdout);
			Pthread_create(&th, NULL, &echosel, conptr);/*creation of Thread*/
		 
		}
	}
 }
Ejemplo n.º 7
0
int main(int argc, char ** argv)
{
    int 	sockfd, 	n;
    char 	recvline[MAXLINE + 1];
    struct 	sockaddr_in	servaddr;
    struct 	in_addr		**pptr;
    struct 	in_addr		*inetaddrp[2];
    struct 	in_addr		inetaddr;
    struct 	hostent		*hp;
    struct 	servent		*sp;

    if( argc != 3 )
        err_quit("usage: daytimetcpcli1 <hostname> <service>");

    if( (hp = gethostbyname(argv[1])) == NULL )
    {
        if(inet_pton(AF_INET, argv[1], &inetaddr) == 0 )
            err_quit("hostname error for %s: %s", argv[1], hstrerror(h_errno));
        else
        {
            inetaddrp[0] = &inetaddr;
            inetaddrp[1] = NULL;
            pptr = inetaddrp;
        }
    }
    else
        pptr = (struct in_addr **)hp->h_addr_list;

    if( (sp = getservbyname(argv[2], "tcp")) == NULL )
        err_quit("getservbyname error for %s", argv[2]);

    for(; *pptr != NULL; ++pptr)
    {
        sockfd = Socket(AF_INET, SOCK_STREAM, 0);

        bzero(&servaddr, sizeof(servaddr));
        servaddr.sin_family = AF_INET;
        servaddr.sin_port = sp->s_port;
        memcpy(&servaddr.sin_addr, *pptr, sizeof(struct in_addr));

        printf("trying %s\n", Sock_ntop((SA *)&servaddr, sizeof(servaddr)));

        if( connect(sockfd, (SA *)&servaddr, sizeof(servaddr)) == 0)
            break;

        err_ret("connect error");
        Close(sockfd);
    }

    if( *pptr == NULL )
        err_quit("unable to connect");

    char str[] = "hello";
    Writen(sockfd, str, strlen(str));


    while( (n = read(sockfd, recvline, MAXLINE)) > 0)
    {
        recvline[n] = 0;
        Fputs(recvline, stdout);
    }

    exit(0);
}
Ejemplo n.º 8
0
void str_cli(FILE *file,int sockfd)
{
	fd_set rset;
	int nread,maxfd,flag;
	char sendline[MAXLINE],recvline[MAXLINE];
	flag = 1;
	
	FD_ZERO(&rset);
	maxfd = max(fileno(file),sockfd);
	for(;;)
	{
		FD_SET(sockfd,&rset);
		if(flag)
			FD_SET(fileno(file),&rset);
		if(select(maxfd+1,&rset,NULL,NULL,NULL) <0)
			err_quit("select error!");
		
		if(FD_ISSET(fileno(file),&rset)
		{
			if(Fgets(sendline,MAXLINE,file) == NULL)
			{
				flag = 0;
				shutdown(sockfd,SHUT_WR);
				FD_CLR(fileno(file),&rset);
				continue;
			}else
				Writen(sockfd,sendline,strlen(buffer));
		}
		
		if(FD_ISSET(sockfd,&rset))
		{
			if(Readline(sockfd,recvline,MAXLINE) == 0)
			{
				if(flag == 0)
					break;
				else
					err_quit("str_cli:server terminated prematurely");
			}
			Fputs(recvline,file);
		}
	}

void str_cli(FILE *file,int sockfd)
{
	fd_set rset;
	int nread,maxfd,flag;
	char sendline[MAXLINE],recvline[MAXLINE];
	flag = 1;
	
	FD_ZERO(&rset);
	maxfd = max(fileno(file),sockfd);
	for(;;)
	{
		FD_SET(sockfd,&rset);
		if(flag)
			FD_SET(fileno(file),&rset);
		if(select(maxfd+1,&rset,NULL,NULL,NULL) <0)
			err_quit("select error!");
		
		if(FD_ISSET(fileno(file),&rset)
		{
			if(Fgets(sendline,MAXLINE,file) == NULL)
			{
				flag = 0;
				shutdown(sockfd,SHUT_WR);
				FD_CLR(fileno(file),&rset);
				continue;
			}else
				Writen(sockfd,sendline,strlen(buffer));
		}
		
		if(FD_ISSET(sockfd,&rset))
		{
			if(Readline(sockfd,recvline,MAXLINE) == 0)
			{
				if(flag == 0)
					break;
				else
					err_quit("str_cli:server terminated prematurely");
			}
			Fputs(recvline,file);
		}
	}
}