diff --git a/TODO b/TODO index 7ff5d64d62f..e3efaa81df6 100644 --- a/TODO +++ b/TODO @@ -1293,8 +1293,8 @@ o Libraries (libc/, libm/) Priority: ?? Title: FLOATING POINT FORMATS - Description: Only the %f floating point format is supported. Others are accepted - but treated like %f. + Description: Only the %f floating point format is supported. Others are + accepted but treated like %f. Status: Open Priority: Medium (this might important to someone). @@ -1346,7 +1346,7 @@ o Libraries (libc/, libm/) Priority: Low for casual users but clearly high if you need care about these incorrect corner case behaviors in the math libraries. - Title: Repartition libc functionality. + Title: REPARTITION LIBC FUNCTIONALITY Description: There are many things implemented within the kernel (for example under sched/pthread) that probably should be migrated in the C library where it belongs. @@ -1877,9 +1877,10 @@ o Network Utilities (apps/netutils/) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Title: UNVERIFIED THTTPD FEATURES - Description: Not all THTTPD features/options have been verified. In particular, there is no - test case of a CGI program receiving POST input. Only the configuration of - apps/examples/thttpd has been tested. + Description: Not all THTTPD features/options have been verified. In + particular, there is no test case of a CGI program receiving + POST input. Only the configuration of apps/examples/thttpd + has been tested. Status: Open Priority: Medium diff --git a/fs/inode/fs_inodesearch.c b/fs/inode/fs_inodesearch.c index 0c452de1a53..c4d6cc07922 100644 --- a/fs/inode/fs_inodesearch.c +++ b/fs/inode/fs_inodesearch.c @@ -250,7 +250,6 @@ static int _inode_search(FAR struct inode_search_s *desc) DEBUGASSERT(desc != NULL && desc->path != NULL); name = desc->path; - DEBUGASSERT(*name == '/'); if (*name != '/') { return -EINVAL; diff --git a/fs/procfs/fs_procfs.c b/fs/procfs/fs_procfs.c index 13998e53ffc..0be299c3954 100644 --- a/fs/procfs/fs_procfs.c +++ b/fs/procfs/fs_procfs.c @@ -474,16 +474,32 @@ static int procfs_dup(FAR const struct file *oldp, FAR struct file *newp) static int procfs_fstat(FAR const struct file *filep, FAR struct stat *buf) { - /* This is trivially simple in the current implementation. The procfs - * file system contains only directory and read-only data file entries. - * Therefore, the return buf always has the same fixed values. - * - * REVISIT: This, of course, will need to change if read-write procfs - * entries are to be supported. + FAR struct procfs_file_s *handler; + + finfo("buf=%p\n", buf); + + /* Recover our private data from the struct file instance */ + + handler = (FAR struct procfs_file_s *)filep->f_priv; + DEBUGASSERT(handler); + + /* The procfs file system contains only directory and data file entries. + * Since the file has been opened, we know that this is a data file and, + * at a minimum, readable. */ memset(buf, 0, sizeof(struct stat)); buf->st_mode = S_IFREG | S_IROTH | S_IRGRP | S_IRUSR; + + /* If the write method is provided, then let's also claim that the file is + * writable. + */ + + if (handler->procfsentry->ops->write != NULL) + { + buf->st_mode |= S_IWOTH | S_IWGRP | S_IWUSR; + } + return OK; }