#include <conio.h>
#include "extern.h"

rsbread(flg)
int flg;
   {
	int data;

	if ( udflg == 1 )
    	{  if ( kbhit() ) { if ( getch() == 0x1a )
							{ printf("\n\n+++ アップロードを中止します。\n");
							  fclose(fpud); udflg = 0; return(0x0d);
							}
						  }
		   if ( feof(fpud) )
			{ printf("\n\n+++ アップロード終了\n");
			  fclose(fpud); udflg = 0; return(0x0d);
			}
		   data = fgetc(fpud);
		   if ( data == 0x0a ) { data = 0x0d; }
		}
	if ( udflg == 2 )
		{   data = getch();
			if ( data == 0x1a ) { printf("\n\n+++ ダウンロードを終了します。\n");
									fclose(fpud); udflg = 0; return(0x0d);
							    }
			if ( data == 0x0d ) { char lf = 0x0a; fputc(lf,fpud); }
					else		{ fputc(data,fpud); }
		}
	if ( udflg == 0 )
		{   data = getch();
			if ( data == 0x1a )
				{ char udfil[41];
				  int i;
				  printf("\n\n+++ アップロード:U ダウンロード:D =");
				  while( ! kbhit() ) {}
				  data = getche();
				  if ( data == 'U' ) udflg = 1;
				  if ( data == 'D' ) udflg = 2;
				  if ( ! udflg ) { printf("+++ \n\nコマンドに誤りがあります｡\n");
								   return(0x0d);
								 }
				  udfil[40] = NULL;
				  printf("\n+++ ファイル名は？(キャンセルは cr）=");
				  for ( i = 0 ; i < 40 ; i++ )
					{ while( ! kbhit() ) {}
					  data = getche();
					  if ( data == 0x08 && i )
                         { putchar(' '); putchar(0x08); i--; i--; continue; }
					  if ( data == 0x0d ) 
						{
					  		if ( i == 0 )
								{ printf("\n+++ キャンセルされました｡\n");
					  				udflg = 0;
					  				return(0x0d);
								}
							udfil[i] = NULL;
						    break;
						}
					  udfil[i] = data;
					}
				  i++; 
				  if ( udflg == 1 )
					{ fpud = fopen(udfil,"r");
					  if ( fpud == NULL )
						 { printf("\n\n+++ ファイルがありません  %s\n",udfil);
						   udflg = 0;
						 }
					}
				  if ( udflg == 2 )
					{ fpud = fopen(udfil,"a");
					  if ( fpud == NULL )
						 { printf("\n\n+++ パスに誤りがあります。 %s\n",udfil);
						   udflg = 0;
						 }
					}
				return(0x0d);
			}
		}
	return(data);
   }
