Mask off high 8 bits from dirent->name_len.
Many files:
The ext2 version and flags ioctl's take an int *, not a long *. Fix
library to use the correct type, so we don't have problems on the
Alpha.
+Sun Mar 8 22:53:04 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
+
+ * ls.c (list_dir_proc): Mask off high 8 bits from
+ dirent->name_len.
+
Mon Dec 1 13:21:09 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
* Makefile.in: Install debugfs in /sbin, instead of /usr/sbin.
struct list_dir_struct *ls = (struct list_dir_struct *) private;
int thislen;
- thislen = (dirent->name_len < EXT2_NAME_LEN) ? dirent->name_len :
- EXT2_NAME_LEN;
+ thislen = ((dirent->name_len & 0xFF) < EXT2_NAME_LEN) ?
+ (dirent->name_len & 0xFF) : EXT2_NAME_LEN;
strncpy(name, dirent->name, thislen);
name[thislen] = '\0';
+Mon Mar 9 08:05:30 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
+
+ * fgetflags.c, fgetversion.c, fsetflags.c, fsetversion.c,
+ getflags.c, getversion.c, setflags.c, setversion.c:
+ The ext2 version and flags ioctl's take an int *, not a
+ long *. Fix library to use the correct type, so we don't
+ have problems on the Alpha.
+
Tue Jun 17 01:33:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
* Release of E2fsprogs 1.11
int fgetflags (const char * name, unsigned long * flags)
{
#if HAVE_STAT_FLAGS
- struct stat buf;
+ struct stat buf;
- if (stat (name, &buf) == -1)
- return -1;
+ if (stat (name, &buf) == -1)
+ return -1;
- *flags = 0;
+ *flags = 0;
#ifdef UF_IMMUTABLE
- if (buf.st_flags & UF_IMMUTABLE)
- *flags |= EXT2_IMMUTABLE_FL;
+ if (buf.st_flags & UF_IMMUTABLE)
+ *flags |= EXT2_IMMUTABLE_FL;
#endif
#ifdef UF_APPEND
- if (buf.st_flags & UF_APPEND)
- *flags |= EXT2_APPEND_FL;
+ if (buf.st_flags & UF_APPEND)
+ *flags |= EXT2_APPEND_FL;
#endif
#ifdef UF_NODUMP
- if (buf.st_flags & UF_NODUMP)
- *flags |= EXT2_NODUMP_FL;
+ if (buf.st_flags & UF_NODUMP)
+ *flags |= EXT2_NODUMP_FL;
#endif
- return 0;
+ return 0;
#else
#if HAVE_EXT2_IOCTLS
- int fd;
- int r;
+ int fd, r, f;
fd = open (name, O_RDONLY|O_NONBLOCK);
if (fd == -1)
return -1;
- r = ioctl (fd, EXT2_IOC_GETFLAGS, flags);
+ r = ioctl (fd, EXT2_IOC_GETFLAGS, &f);
+ *flags = f;
close (fd);
return r;
int fgetversion (const char * name, unsigned long * version)
{
#if HAVE_EXT2_IOCTLS
- int fd;
- int r;
+ int fd, r, ver;
fd = open (name, O_RDONLY|O_NONBLOCK);
if (fd == -1)
return - 1;
- r = ioctl (fd, EXT2_IOC_GETVERSION, version);
+ r = ioctl (fd, EXT2_IOC_GETVERSION, ver);
+ *version = ver;
close (fd);
return r;
#else /* ! HAVE_EXT2_IOCTLS */
int fsetflags (const char * name, unsigned long flags)
{
#if HAVE_CHFLAGS
- unsigned long bsd_flags = 0;
+ unsigned long bsd_flags = 0;
#ifdef UF_IMMUTABLE
- if (flags & EXT2_IMMUTABLE_FL)
- bsd_flags |= UF_IMMUTABLE;
+ if (flags & EXT2_IMMUTABLE_FL)
+ bsd_flags |= UF_IMMUTABLE;
#endif
#ifdef UF_APPEND
- if (flags & EXT2_APPEND_FL)
- bsd_flags |= UF_APPEND;
+ if (flags & EXT2_APPEND_FL)
+ bsd_flags |= UF_APPEND;
#endif
#ifdef UF_NODUMP
- if (flags & EXT2_NODUMP_FL)
- bsd_flags |= UF_NODUMP;
+ if (flags & EXT2_NODUMP_FL)
+ bsd_flags |= UF_NODUMP;
#endif
- return chflags (name, bsd_flags);
+ return chflags (name, bsd_flags);
#else
#if HAVE_EXT2_IOCTLS
- int fd;
- int r;
+ int fd, r, f;
fd = open (name, O_RDONLY|O_NONBLOCK);
if (fd == -1)
return -1;
- r = ioctl (fd, EXT2_IOC_SETFLAGS, &flags);
+ f = (int) flags;
+ r = ioctl (fd, EXT2_IOC_SETFLAGS, &f);
close (fd);
return r;
#else /* ! HAVE_EXT2_IOCTLS */
int fsetversion (const char * name, unsigned long version)
{
#if HAVE_EXT2_IOCTLS
- int fd;
- int r;
+ int fd, r, ver;
fd = open (name, O_RDONLY|O_NONBLOCK);
if (fd == -1)
return -1;
- r = ioctl (fd, EXT2_IOC_SETVERSION, &version);
+ ver = (int) version;
+ r = ioctl (fd, EXT2_IOC_SETVERSION, &ver);
close (fd);
return r;
#else /* ! HAVE_EXT2_IOCTLS */
int getflags (int fd, unsigned long * flags)
{
#if HAVE_STAT_FLAGS
- struct stat buf;
+ struct stat buf;
- if (fstat (fd, &buf) == -1)
- return -1;
+ if (fstat (fd, &buf) == -1)
+ return -1;
- *flags = 0;
+ *flags = 0;
#ifdef UF_IMMUTABLE
- if (buf.st_flags & UF_IMMUTABLE)
- *flags |= EXT2_IMMUTABLE_FL;
+ if (buf.st_flags & UF_IMMUTABLE)
+ *flags |= EXT2_IMMUTABLE_FL;
#endif
#ifdef UF_APPEND
- if (buf.st_flags & UF_APPEND)
- *flags |= EXT2_APPEND_FL;
+ if (buf.st_flags & UF_APPEND)
+ *flags |= EXT2_APPEND_FL;
#endif
#ifdef UF_NODUMP
- if (buf.st_flags & UF_NODUMP)
- *flags |= EXT2_NODUMP_FL;
+ if (buf.st_flags & UF_NODUMP)
+ *flags |= EXT2_NODUMP_FL;
#endif
- return 0;
+ return 0;
#else
#if HAVE_EXT2_IOCTLS
- return ioctl (fd, EXT2_IOC_GETFLAGS, flags);
+ int r, f;
+
+ r = ioctl (fd, EXT2_IOC_GETFLAGS, &f);
+ *flags = f;
+ return r;
#else /* ! HAVE_EXT2_IOCTLS */
extern int errno;
errno = EOPNOTSUPP;
int getversion (int fd, unsigned long * version)
{
#if HAVE_EXT2_IOCTLS
- return ioctl (fd, EXT2_IOC_GETVERSION, version);
+ int r, ver;
+
+ r = ioctl (fd, EXT2_IOC_GETVERSION, &ver);
+ *version = ver;
#else /* ! HAVE_EXT2_IOCTLS */
extern int errno;
errno = EOPNOTSUPP;
int setflags (int fd, unsigned long flags)
{
#if HAVE_CHFLAGS
- unsigned long bsd_flags = 0;
+ unsigned long bsd_flags = 0;
#ifdef UF_IMMUTABLE
- if (flags & EXT2_IMMUTABLE_FL)
- bsd_flags |= UF_IMMUTABLE;
+ if (flags & EXT2_IMMUTABLE_FL)
+ bsd_flags |= UF_IMMUTABLE;
#endif
#ifdef UF_APPEND
- if (flags & EXT2_APPEND_FL)
- bsd_flags |= UF_APPEND;
+ if (flags & EXT2_APPEND_FL)
+ bsd_flags |= UF_APPEND;
#endif
#ifdef UF_NODUMP
- if (flags & EXT2_NODUMP_FL)
- bsd_flags |= UF_NODUMP;
+ if (flags & EXT2_NODUMP_FL)
+ bsd_flags |= UF_NODUMP;
#endif
- return fchflags (fd, bsd_flags);
+ return fchflags (fd, bsd_flags);
#else
#if HAVE_EXT2_IOCTLS
- return ioctl (fd, EXT2_IOC_SETFLAGS, &flags);
+ int f;
+
+ f = (int) flags;
+ return ioctl (fd, EXT2_IOC_SETFLAGS, &f);
#else /* ! HAVE_EXT2_IOCTLS */
extern int errno;
errno = EOPNOTSUPP;
int setversion (int fd, unsigned long version)
{
#if HAVE_EXT2_IOCTLS
- return ioctl (fd, EXT2_IOC_SETVERSION, &version);
+ int ver;
+
+ ver = (int) version;
+ return ioctl (fd, EXT2_IOC_SETVERSION, &ver);
#else /* ! HAVE_EXT2_IOCTLS */
extern int errno;
errno = EOPNOTSUPP;