⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.c

📁 一套客户/服务器模式的备份系统代码,跨平台,支持linux,AIX, IRIX, FreeBSD, Digital Unix (OSF1), Solaris and HP-UX.
💻 C
📖 第 1 页 / 共 5 页
字号:
	  *num_read = num;	  return(0);	}    }    else{		/* in case of eof this is not really good code */	if(j > 0)	  memcpy(cptr, cbuf + cbufptr, j);	cbufptr += j;	*num_read = num;	return(0);    }  }  return(0);	/* NOTREACHED */}Int32bu_input(UChar * buf, Int32 num, AarParams * params){  Int32		i, r;  i = receive(buf, num, &r);  if(i && i != ENDOFFILEREACHED && i != ENDOFTAPEREACHED){    fprintf(params->errfp,	T_("%sError: unexpected fault receiving from server: %s. Trying to continue ...\n"),		(i > 0 ? T_("Server ") : ""),		(i > 0 ? fault_string(i) : (UChar *) strerror(-i)));  }  try_optimize_throughput();  return(r);}Int32getcartandfile(AarParams * params){  static Flag	first_call = YES;  static Int32	prev_cart = -1;  UChar		buf[10];  Int32		r = 0;  if(filenum_valid)    return(0);  if(QUEUEDOP){    r = append_to_queue(QUERYPOSITION, NULL, 7, NULL, 0);    if(first_call){	r = post_process_rest_of_queue(0);    }  }  else{    if( (r = send_cmd(QUERYPOSITION)) )	return(r);    if(read_forced(commfd, buf, 7) != 7)	return(- errno);    bytes_transferred += ESTIM_PROT_OVERHEAD + 7;    if( (r = result()) )	return(r);    xref_to_UnsN(&cart, buf, 24);    xref_to_Uns32(&filenum, buf + 3);  }  filenum_valid = YES;  bytes_wr_unkn_pos = 0;  if(first_call){    params->vars.firstcart = cart;    params->vars.firstfile = filenum;    first_call = NO;  }  if(cart != prev_cart){    params->vars.used_carts = add_to_Uns32Ranges(params->vars.used_carts,					cart, cart);    if(params->vars.used_carts)	pack_Uns32Ranges(params->vars.used_carts, NULL);    prev_cart = cart;  }  return(r);}Int32getrdcartandfile(AarParams * params){  static Flag	first_call = YES;  static Int32	prev_cart = -1;  UChar		buf[10];  Int32		r = 0;  if(rdfilenum_valid)    return(0);  if(QUEUEDOP){    r = append_to_queue(QUERYRDPOSITION, NULL, 7, NULL, 0);    if(first_call){	r = post_process_rest_of_queue(0);    }  }  else{    if( (r = send_cmd(QUERYRDPOSITION)) )	return(r);    if(read_forced(commfd, buf, 7) != 7)	return(- errno);    bytes_transferred += ESTIM_PROT_OVERHEAD + 7;    if( (r = result()) )	return(r);    xref_to_UnsN(&rdcart, buf, 24);    xref_to_Uns32(&rdfilenum, buf + 3);  }  rdfilenum_valid = YES;  if(first_call){    params->vars.firstcart = rdcart;    params->vars.firstfile = rdfilenum;    first_call = NO;  }  if(cart != prev_cart){    params->vars.used_carts = add_to_Uns32Ranges(params->vars.used_carts,					rdcart, rdcart);    if(params->vars.used_carts)	pack_Uns32Ranges(params->vars.used_carts, NULL);    prev_cart = rdcart;  }  return(r);}Int32getwrcartandfile(AarParams * params){  static Flag	first_call = YES;  static Int32	prev_cart = -1;  UChar		buf[10];  Int32		r = 0;  if(wrfilenum_valid)    return(0);  if(QUEUEDOP){    r = append_to_queue(QUERYWRPOSITION, NULL, 7, NULL, 0);    if(first_call)	r = post_process_rest_of_queue(0);  }  else{    if( (r = send_cmd(QUERYWRPOSITION)) )	return(r);    if(read_forced(commfd, buf, 7) != 7)	return(- errno);    bytes_transferred += ESTIM_PROT_OVERHEAD + 7;    if( (r = result()) )	return(r);    xref_to_UnsN(&wrcart, buf, 24);    xref_to_Uns32(&wrfilenum, buf + 3);  }  wrfilenum_valid = YES;  bytes_wr_unkn_pos = 0;  if(first_call){    params->vars.firstcart = wrcart;    params->vars.firstfile = wrfilenum;    first_call = NO;  }  if(cart != prev_cart){    params->vars.used_carts = add_to_Uns32Ranges(params->vars.used_carts,					wrcart, wrcart);    if(params->vars.used_carts)	pack_Uns32Ranges(params->vars.used_carts, NULL);    prev_cart = cart;  }  return(r);}Int32getint(UChar cmd, Int32 * res, Int32 size, Flag wait_if_buffered){  UChar		buf[10];  Int32		i;  if(QUEUEDOP){    i = append_to_queue(cmd, NULL, size, NULL, 0);    if(i)	return(i);    if(wait_if_buffered)	return(post_process_rest_of_queue(0));    return(i);  }  if( (i = send_cmd(cmd)) )    return(i);  if(read_forced(commfd, buf, size) != size)    return(- errno);  bytes_transferred += ESTIM_PROT_OVERHEAD + size;  if( (i = result()) )    return(i);  xref_to_UnsN(res, buf, (size << 3));  return(0);}Int32getnumcarts(AarParams * params, Flag wait_if_buffered){  static UChar	have_numcarts = 0;  Int32		i;  if(have_numcarts)    return(0);  i = getint(QUERYNUMCARTS, &numcarts, 3, wait_if_buffered);  if(i)    return(i);  have_numcarts = 1;  return(0);}Int32gettapeblocksize(AarParams * params, Flag wait_if_buffered){  return(getint(QUERYTAPEBLOCKSIZE, &tapeblocksize, 4, wait_if_buffered));}Int32getcartset(AarParams * params, Flag wait_if_buffered){  return(getint(QUERYCARTSET, &cartset, 3, wait_if_buffered));}Int32getusedtapes(UChar ** retbuf, UChar * clientid){  UChar		*cptr, buf[4];  Int32		l, n;  n = 1 + 1 + (l = strlen(clientid));  cptr = NEWP(UChar, n);  if(!cptr)    return(-errno);  cptr[0] = QUERYNEEDEDTAPES;  cptr[1] = (UChar) l;  memcpy(cptr + 2, clientid, l);  if(write_forced(commfd, cptr, n) != n)    return(- errno);  bytes_transferred += ESTIM_PROT_OVERHEAD + n;  if(read_forced(commfd, buf, 4) != 4)    return(- errno);  xref_to_Uns32(&l, buf);  l++;  cptr = RENEWP(cptr, UChar, l);  if(!cptr)    return(-errno);  if(read_forced(commfd, cptr, l) != l)    return(- errno);  bytes_transferred += ESTIM_PROT_OVERHEAD + 4 + l;  l--;  n = (Int32) cptr[l];  cptr[l] = '\0';  if(l && (n == COMMAND_OK)){    *retbuf = cptr;  }  else{    *retbuf = NULL;    free(cptr);  }  return(n);}Int32getbufferwithcmd(UChar * buffer, Int32 len, Int32 cmd, Flag wait_if_buffered){  Int32		r = 0;  UChar		*rbuf = NULL;  rbuf = NEWP(UChar, len);  if(!rbuf){    r = - errno;    GETOUT;  }  if(QUEUEDOP){    r = append_to_queue(cmd, rbuf, len, NULL, 0);    if(r)	GETOUT;    if(wait_if_buffered)	r = post_process_rest_of_queue(0);    GETOUT;  }  if( (r = send_cmd(cmd)) )    GETOUT;  if(read_forced(commfd, rbuf, len) != len){    r = - errno;    GETOUT;  }  bytes_transferred += ESTIM_PROT_OVERHEAD + len;  memcpy(buffer, rbuf, len * sizeof(UChar));  r = result(); getout:  ZFREE(rbuf);  return(r);}Int32setcart(Int32 cartnum){  UChar		buf[8], cmd;  Int32		i;  filenum_valid = rdfilenum_valid = NO;  cmd = SETCARTRIDGE;  if(cartnum < 0){    cartnum = - cartnum;    cmd = SETRAWCARTRIDGE;  }  buf[0] = cmd;  UnsN_to_xref(buf + 1, cartnum, 24);  reset_data_buffer;  if(QUEUEDOP){    i = append_to_queue(cmd, NULL, 0, buf + 1, 3);    return(i);  }  if(write_forced(commfd, buf, 4) != 4)    return(- errno);  bytes_transferred += ESTIM_PROT_OVERHEAD + 4;  if( (i = result()) )    return(i);  cart = cartnum;  return(0);}Int32setcartset(Int32 cset){  UChar		buf[8];  Int32		i;  filenum_valid = wrfilenum_valid = rdfilenum_valid = NO;  buf[0] = SETCARTSET;  UnsN_to_xref(buf + 1, cset, 24);  if(QUEUEDOP){    i = append_to_queue(buf[0], NULL, 0, buf + 1, 3);    return(i);  }  if(write_forced(commfd, buf, 4) != 4)    return(- errno);  bytes_transferred += ESTIM_PROT_OVERHEAD + 4;  if( (i = result()) )    return(i);  cartset = cset;  return(0);}Int32setfilenum(Int32 filen){  UChar		buf[8], cmd;  Int32		i;  cmd = SETFILE;  if(filen < 0){    filen = - filen;    cmd = SETRAWFILE;  }  filenum_valid = wrfilenum_valid = rdfilenum_valid = NO;  buf[0] = cmd;  Uns32_to_xref(buf + 1, filen & 0x7fffffff);  reset_data_buffer;  if(QUEUEDOP){    i = append_to_queue(cmd, NULL, 0, buf + 1, 4);    return(i);  }  if(write_forced(commfd, buf, 5) != 5)    return(- errno);  bytes_transferred += ESTIM_PROT_OVERHEAD + 5;  if( (i = result()) )    return(i);  filenum = filen;  return(0);}Int32sendint(UChar cmd, Int32 n, Int32 size){  UChar		buf[8];  Int32		i;  buf[0] = cmd;  UnsN_to_xref(buf + 1, n, size << 3);  if(QUEUEDOP){    i = append_to_queue(cmd, NULL, 0, buf + 1, size);    return(i);  }  size++;  if(write_forced(commfd, buf, size) != size)    return(- errno);  bytes_transferred += ESTIM_PROT_OVERHEAD + size;  return(result());}Int32send_commbufsiz(Int32 cbsize){  return(sendint(SETCOMMBUFSIZ, cbsize, 4));}Int32getnumbytesvalid(Int32 * numbytes){  UChar		buf[8];  Int32		i;  if(QUEUEDOP){    i = append_to_queue(GETNUMREADVALID, NULL, 0, buf + 1, 4);    return(i);  }  if( (i = send_cmd(GETNUMREADVALID)) )    return(i);  if(read_forced(commfd, buf, 4) != 4)    return(- errno);  bytes_transferred += ESTIM_PROT_OVERHEAD + 4;  xref_to_Uns32(numbytes, buf);  return(result());}Int32send_identity(UChar * idstr){  UChar		buf[129];  memset(buf, 0, 129 * sizeof(UChar));  buf[0] = CLIENTIDENT;  strcpy(buf + 1, idstr);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -