Print this page
6063 pkgadd breaks with too many mountpoints

*** 214,232 **** return (retval); } /* This returns the hostname portion of a remote path. */ char * ! get_server_host(short n) { static char hostname[HOST_NM_LN], *host_end; if (fs_tab_used == 0) { return ("unknown source"); } ! if (n >= 0 && n < fs_tab_used) { (void) strcpy(hostname, fs_tab[n]->remote_name); if ((host_end = strchr(hostname, ':')) == NULL) { if ((strcmp(fs_tab[n]->fstype, MNTTYPE_AUTO)) == NULL) return ("automounter"); else --- 214,232 ---- return (retval); } /* This returns the hostname portion of a remote path. */ char * ! get_server_host(uint32_t n) { static char hostname[HOST_NM_LN], *host_end; if (fs_tab_used == 0) { return ("unknown source"); } ! if (n < fs_tab_used) { (void) strcpy(hostname, fs_tab[n]->remote_name); if ((host_end = strchr(hostname, ':')) == NULL) { if ((strcmp(fs_tab[n]->fstype, MNTTYPE_AUTO)) == NULL) return ("automounter"); else
*** 564,580 **** * filesystem. fsys_value is the fs_tab[] entry to which the loopback'd path is * mapped. This returns a pointer to a static area. If the result is needed * for further processing, it should be strdup()'d or something. */ char * ! server_map(char *path, short fsys_value) { static char server_construction[PATH_MAX]; if (fs_tab_used == 0) { (void) strcpy(server_construction, path); ! } else if (fsys_value >= 0 && fsys_value < fs_tab_used) { (void) snprintf(server_construction, sizeof (server_construction), "%s%s", fs_tab[fsys_value]->remote_name, path+strlen(fs_tab[fsys_value]->name)); } else { --- 564,580 ---- * filesystem. fsys_value is the fs_tab[] entry to which the loopback'd path is * mapped. This returns a pointer to a static area. If the result is needed * for further processing, it should be strdup()'d or something. */ char * ! server_map(char *path, uint32_t fsys_value) { static char server_construction[PATH_MAX]; if (fs_tab_used == 0) { (void) strcpy(server_construction, path); ! } else if (fsys_value < fs_tab_used) { (void) snprintf(server_construction, sizeof (server_construction), "%s%s", fs_tab[fsys_value]->remote_name, path+strlen(fs_tab[fsys_value]->name)); } else {
*** 1049,1059 **** * Given a path, return the table index of the filesystem the file apparently * resides on. This doesn't put any time into resolving filesystems that * refer to other filesystems. It just returns the entry containing this * path. */ ! short fsys(char *path) { register int i; char real_path[PATH_MAX]; char path_copy[PATH_MAX]; --- 1049,1059 ---- * Given a path, return the table index of the filesystem the file apparently * resides on. This doesn't put any time into resolving filesystems that * refer to other filesystems. It just returns the entry containing this * path. */ ! uint32_t fsys(char *path) { register int i; char real_path[PATH_MAX]; char path_copy[PATH_MAX];
*** 1145,1155 **** * This function returns the entry in the fs_tab[] corresponding to the * actual filesystem of record. It won't return a loopback filesystem entry, * it will return the filesystem that the loopback filesystem is mounted * over. */ ! short resolved_fsys(char *path) { int i = -1; char path2use[PATH_MAX]; --- 1145,1155 ---- * This function returns the entry in the fs_tab[] corresponding to the * actual filesystem of record. It won't return a loopback filesystem entry, * it will return the filesystem that the loopback filesystem is mounted * over. */ ! uint32_t resolved_fsys(char *path) { int i = -1; char path2use[PATH_MAX];
*** 1168,1178 **** * This function returns the srvr_map status based upon the fs_tab entry * number. This tells us if the server path constructed from the package * install root is really the target filesystem. */ int ! use_srvr_map_n(short n) { return ((int)fs_tab[n]->srvr_map); } /* --- 1168,1178 ---- * This function returns the srvr_map status based upon the fs_tab entry * number. This tells us if the server path constructed from the package * install root is really the target filesystem. */ int ! use_srvr_map_n(uint32_t n) { return ((int)fs_tab[n]->srvr_map); } /*
*** 1179,1199 **** * This function returns the mount status based upon the fs_tab entry * number. This tells us if there is any hope of gaining access * to this file system. */ int ! is_mounted_n(short n) { return ((int)fs_tab[n]->mounted); } /* * is_fs_writeable_n - given an fstab index, return 1 * if it's writeable, 0 if read-only. */ int ! is_fs_writeable_n(short n) { /* * If the write access permissions haven't been confirmed, do that * now. Note that the only reason we need to do the special check is * in the case of an NFS mount (remote) because we can't determine if --- 1179,1199 ---- * This function returns the mount status based upon the fs_tab entry * number. This tells us if there is any hope of gaining access * to this file system. */ int ! is_mounted_n(uint32_t n) { return ((int)fs_tab[n]->mounted); } /* * is_fs_writeable_n - given an fstab index, return 1 * if it's writeable, 0 if read-only. */ int ! is_fs_writeable_n(uint32_t n) { /* * If the write access permissions haven't been confirmed, do that * now. Note that the only reason we need to do the special check is * in the case of an NFS mount (remote) because we can't determine if
*** 1215,1232 **** * if it's a remote filesystem, 0 if local. * * Note: Upon entry, a valid fsys() is required. */ int ! is_remote_fs_n(short n) { return ((int)fs_tab[n]->remote); } /* index-driven is_served() */ int ! is_served_n(short n) { return ((int)fs_tab[n]->served); } /* --- 1215,1232 ---- * if it's a remote filesystem, 0 if local. * * Note: Upon entry, a valid fsys() is required. */ int ! is_remote_fs_n(uint32_t n) { return ((int)fs_tab[n]->remote); } /* index-driven is_served() */ int ! is_served_n(uint32_t n) { return ((int)fs_tab[n]->served); } /*
*** 1233,1243 **** * This returns the number of blocks available on the indicated filesystem. * * Note: Upon entry, a valid fsys() is required. */ fsblkcnt_t ! get_blk_free_n(short n) { return (fs_tab[n]->bfree); } /* --- 1233,1243 ---- * This returns the number of blocks available on the indicated filesystem. * * Note: Upon entry, a valid fsys() is required. */ fsblkcnt_t ! get_blk_free_n(uint32_t n) { return (fs_tab[n]->bfree); } /*
*** 1244,1254 **** * This returns the number of blocks being used on the indicated filesystem. * * Note: Upon entry, a valid fsys() is required. */ fsblkcnt_t ! get_blk_used_n(short n) { return (fs_tab[n]->bused); } /* --- 1244,1254 ---- * This returns the number of blocks being used on the indicated filesystem. * * Note: Upon entry, a valid fsys() is required. */ fsblkcnt_t ! get_blk_used_n(uint32_t n) { return (fs_tab[n]->bused); } /*
*** 1255,1265 **** * This returns the number of inodes available on the indicated filesystem. * * Note: Upon entry, a valid fsys() is required. */ fsblkcnt_t ! get_inode_free_n(short n) { return (fs_tab[n]->ffree); } /* --- 1255,1265 ---- * This returns the number of inodes available on the indicated filesystem. * * Note: Upon entry, a valid fsys() is required. */ fsblkcnt_t ! get_inode_free_n(uint32_t n) { return (fs_tab[n]->ffree); } /*
*** 1266,1276 **** * This returns the number of inodes being used on the indicated filesystem. * * Note: Upon entry, a valid fsys() is required. */ fsblkcnt_t ! get_inode_used_n(short n) { return (fs_tab[n]->fused); } /* --- 1266,1276 ---- * This returns the number of inodes being used on the indicated filesystem. * * Note: Upon entry, a valid fsys() is required. */ fsblkcnt_t ! get_inode_used_n(uint32_t n) { return (fs_tab[n]->fused); } /*
*** 1277,1310 **** * Sets the number of blocks being used on the indicated filesystem. * * Note: Upon entry, a valid fsys() is required. */ void ! set_blk_used_n(short n, fsblkcnt_t value) { fs_tab[n]->bused = value; } /* Get the filesystem block size. */ fsblkcnt_t ! get_blk_size_n(short n) { return (fs_tab[n]->bsize); } /* Get the filesystem fragment size. */ fsblkcnt_t ! get_frag_size_n(short n) { return (fs_tab[n]->bsize); } /* * This returns the name of the indicated filesystem. */ char * ! get_fs_name_n(short n) { if (fs_tab_used == 0) { return (NULL); } else if (n >= fs_tab_used) { return (NULL); --- 1277,1310 ---- * Sets the number of blocks being used on the indicated filesystem. * * Note: Upon entry, a valid fsys() is required. */ void ! set_blk_used_n(uint32_t n, fsblkcnt_t value) { fs_tab[n]->bused = value; } /* Get the filesystem block size. */ fsblkcnt_t ! get_blk_size_n(uint32_t n) { return (fs_tab[n]->bsize); } /* Get the filesystem fragment size. */ fsblkcnt_t ! get_frag_size_n(uint32_t n) { return (fs_tab[n]->bsize); } /* * This returns the name of the indicated filesystem. */ char * ! get_fs_name_n(uint32_t n) { if (fs_tab_used == 0) { return (NULL); } else if (n >= fs_tab_used) { return (NULL);
*** 1317,1336 **** * This returns the remote name of the indicated filesystem. * * Note: Upon entry, a valid fsys() is required. */ char * ! get_source_name_n(short n) { return (fs_tab[n]->remote_name); } /* * This function returns the srvr_map status based upon the path. */ int ! use_srvr_map(char *path, short *fsys_value) { if (*fsys_value == BADFSYS) *fsys_value = fsys(path); return (use_srvr_map_n(*fsys_value)); --- 1317,1336 ---- * This returns the remote name of the indicated filesystem. * * Note: Upon entry, a valid fsys() is required. */ char * ! get_source_name_n(uint32_t n) { return (fs_tab[n]->remote_name); } /* * This function returns the srvr_map status based upon the path. */ int ! use_srvr_map(char *path, uint32_t *fsys_value) { if (*fsys_value == BADFSYS) *fsys_value = fsys(path); return (use_srvr_map_n(*fsys_value));
*** 1338,1348 **** /* * This function returns the mount status based upon the path. */ int ! is_mounted(char *path, short *fsys_value) { if (*fsys_value == BADFSYS) *fsys_value = fsys(path); return (is_mounted_n(*fsys_value)); --- 1338,1348 ---- /* * This function returns the mount status based upon the path. */ int ! is_mounted(char *path, uint32_t *fsys_value) { if (*fsys_value == BADFSYS) *fsys_value = fsys(path); return (is_mounted_n(*fsys_value));
*** 1354,1364 **** * * Note: Upon exit, a valid fsys() is guaranteed. This is * an interface requirement. */ int ! is_fs_writeable(char *path, short *fsys_value) { if (*fsys_value == BADFSYS) *fsys_value = fsys(path); return (is_fs_writeable_n(*fsys_value)); --- 1354,1364 ---- * * Note: Upon exit, a valid fsys() is guaranteed. This is * an interface requirement. */ int ! is_fs_writeable(char *path, uint32_t *fsys_value) { if (*fsys_value == BADFSYS) *fsys_value = fsys(path); return (is_fs_writeable_n(*fsys_value));
*** 1370,1380 **** * * Also Note: Upon exit, a valid fsys() is guaranteed. This is * an interface requirement. */ int ! is_remote_fs(char *path, short *fsys_value) { if (*fsys_value == BADFSYS) *fsys_value = fsys(path); return (is_remote_fs_n(*fsys_value)); --- 1370,1380 ---- * * Also Note: Upon exit, a valid fsys() is guaranteed. This is * an interface requirement. */ int ! is_remote_fs(char *path, uint32_t *fsys_value) { if (*fsys_value == BADFSYS) *fsys_value = fsys(path); return (is_remote_fs_n(*fsys_value));
*** 1385,1395 **** * client is getting this file from a server and it is not writeable by the * client. It has nothing to do with whether or not this particular operation * (eg: pkgadd or pkgrm) will be writing to it. */ int ! is_served(char *path, short *fsys_value) { if (*fsys_value == BADFSYS) *fsys_value = fsys(path); return (is_served_n(*fsys_value)); --- 1385,1395 ---- * client is getting this file from a server and it is not writeable by the * client. It has nothing to do with whether or not this particular operation * (eg: pkgadd or pkgrm) will be writing to it. */ int ! is_served(char *path, uint32_t *fsys_value) { if (*fsys_value == BADFSYS) *fsys_value = fsys(path); return (is_served_n(*fsys_value));
*** 1399,1409 **** * get_remote_path - given a filesystem table index, return the * path of the filesystem on the remote system. Otherwise, * return NULL if it's a local filesystem. */ char * ! get_remote_path(short n) { char *p; if (!is_remote_fs_n(n)) return (NULL); /* local */ --- 1399,1409 ---- * get_remote_path - given a filesystem table index, return the * path of the filesystem on the remote system. Otherwise, * return NULL if it's a local filesystem. */ char * ! get_remote_path(uint32_t n) { char *p; if (!is_remote_fs_n(n)) return (NULL); /* local */
*** 1419,1437 **** * get_mount_point - given a filesystem table index, return the * path of the mount point. Otherwise, * return NULL if it's a local filesystem. */ char * ! get_mount_point(short n) { if (!is_remote_fs_n(n)) return (NULL); /* local */ return (fs_tab[n]->name); } struct fstable * ! get_fs_entry(short n) { if (fs_tab_used == 0) { return (NULL); } else if (n >= fs_tab_used) { return (NULL); --- 1419,1437 ---- * get_mount_point - given a filesystem table index, return the * path of the mount point. Otherwise, * return NULL if it's a local filesystem. */ char * ! get_mount_point(uint32_t n) { if (!is_remote_fs_n(n)) return (NULL); /* local */ return (fs_tab[n]->name); } struct fstable * ! get_fs_entry(uint32_t n) { if (fs_tab_used == 0) { return (NULL); } else if (n >= fs_tab_used) { return (NULL);