zoukankan      html  css  js  c++  java
  • 2.2 为路径名动态分配空间

    lib/pathalloc.c

    #include "apue.h"
    #include <errno.h>
    #include <limits.h>
    #ifdef	PATH_MAX
    static int	pathmax = PATH_MAX;
    #else
    static int	pathmax = 0;
    #endif
    #define SUSV3	200112L
    static long	posix_version = 0;
    /* If PATH_MAX is indeterminate, no guarantee this is adequate */
    #define	PATH_MAX_GUESS	1024
    char *
    path_alloc(int *sizep) /* also return allocated size, if nonnull */
    {
    	char	*ptr;
    	int	size;
    	if (posix_version == 0)
    		posix_version = sysconf(_SC_VERSION);
    	if (pathmax == 0) {		/* first time through */
    		errno = 0;
    		if ((pathmax = pathconf("/", _PC_PATH_MAX)) < 0) {
    			if (errno == 0)
    				pathmax = PATH_MAX_GUESS;	/* it's indeterminate */
    			else
    				err_sys("pathconf error for _PC_PATH_MAX");
    		} else {
    			pathmax++;		/* add one since it's relative to root */
    		}
    	}
    	if (posix_version < SUSV3)
    		size = pathmax + 1;
    	else
    		size = pathmax;
    	if ((ptr = malloc(size)) == NULL)
    		err_sys("malloc error for pathname");
    	if (sizep != NULL)
    		*sizep = size;
    	return(ptr);
    }
  • 相关阅读:
    第三次作业-有进度条圆周率计算
    第一周作业
    24点
    Cuber Sorting
    P1827 [USACO3.4]美国血统 American Heritage
    P4387 【深基15.习9】验证栈序列
    P2058 海港
    P4017 最大食物链计数
    P2196 挖地雷
    放苹果问题
  • 原文地址:https://www.cnblogs.com/paullam/p/3849918.html
Copyright © 2011-2022 走看看