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

📄 ares__read_line.c

📁 这是国外的resip协议栈
💻 C
字号:
/* Copyright 1998 by the Massachusetts Institute of Technology. * * Permission to use, copy, modify, and distribute this * software and its documentation for any purpose and without * fee is hereby granted, provided that the above copyright * notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting * documentation, and that the name of M.I.T. not be used in * advertising or publicity pertaining to distribution of the * software without specific, written prior permission. * M.I.T. makes no representations about the suitability of * this software for any purpose.  It is provided "as is" * without express or implied warranty. */#include <stdio.h>#include <stdlib.h>#include <string.h>#include "ares.h"#include "ares_private.h"/* This is an internal function.  Its contract is to read a line from * a file into a dynamically allocated buffer, zeroing the trailing * newline if there is one.  The calling routine may call * ares__read_line multiple times with the same buf and bufsize * pointers; *buf will be reallocated and *bufsize adjusted as * appropriate.  The initial value of *buf should be NULL.  After the * calling routine is done reading lines, it should free *buf. */int ares__read_line(FILE *fp, char **buf, int *bufsize){  char *newbuf;  int offset = 0, len;  if (*buf == NULL)    {      *buf = malloc(128);      if (!*buf)	return ARES_ENOMEM;      *bufsize = 128;    }  while (1)    {      if (!fgets(*buf + offset, *bufsize - offset, fp))	return (offset != 0) ? 0 : (ferror(fp)) ? ARES_EFILE : ARES_EOF;      len = offset + strlen(*buf + offset);      if ((*buf)[len - 1] == '\n')	{	  (*buf)[len - 1] = 0;	  return ARES_SUCCESS;	}      offset = len;      /* Allocate more space. */      newbuf = realloc(*buf, *bufsize * 2);      if (!newbuf)	return ARES_ENOMEM;      *buf = newbuf;      *bufsize *= 2;    }}

⌨️ 快捷键说明

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