static int write_object_header(int objId, yaffs_ObjectType t, struct stat *s, int parent, const char *name, int equivalentObj, const char * alias) { __u8 bytes[chunkSize]; yaffs_ObjectHeader *oh = (yaffs_ObjectHeader *)bytes; memset(bytes,0xff,sizeof(bytes)); oh->type = t; oh->parentObjectId = parent; strncpy(oh->name,name,YAFFS_MAX_NAME_LENGTH); if(t != YAFFS_OBJECT_TYPE_HARDLINK) { oh->yst_mode = s->st_mode; oh->yst_uid = s->st_uid; // NCB 12/9/02 oh->yst_gid = s->yst_uid; oh->yst_gid = s->st_gid; oh->yst_atime = s->st_atime; oh->yst_mtime = s->st_mtime; oh->yst_ctime = s->st_ctime; oh->yst_rdev = s->st_rdev; } if(t == YAFFS_OBJECT_TYPE_FILE) { oh->fileSize = s->st_size; } if(t == YAFFS_OBJECT_TYPE_HARDLINK) { oh->equivalentObjectId = equivalentObj; } if(t == YAFFS_OBJECT_TYPE_SYMLINK) { strncpy(oh->alias,alias,YAFFS_MAX_ALIAS_LENGTH); } if (convert_endian) { object_header_little_to_big_endian(oh); } return write_chunk(bytes,objId,0,0xffff); }
static int write_object_header(int objId, yaffs_ObjectType t, struct stat *s, int parent, const char *name, int equivalentObj, const char * alias, const char *secontext) { __u8 bytes[chunkSize]; yaffs_ObjectHeader *oh = (yaffs_ObjectHeader *)bytes; char *xb = (char *)bytes + sizeof(*oh); int xnamelen = strlen(XATTR_NAME_SELINUX) + 1; int xvalsize = 0; int xreclen = 0; if (secontext) { xvalsize = strlen(secontext) + 1; xreclen = sizeof(int) + xnamelen + xvalsize; } memset(bytes,0xff,sizeof(bytes)); oh->type = t; oh->parentObjectId = parent; strncpy(oh->name,name,YAFFS_MAX_NAME_LENGTH); if (xreclen) { memcpy(xb, &xreclen, sizeof(int)); xb += sizeof(int); strcpy(xb, XATTR_NAME_SELINUX); xb += xnamelen; memcpy(xb, secontext, xvalsize); } if(t != YAFFS_OBJECT_TYPE_HARDLINK) { oh->yst_mode = s->st_mode; oh->yst_uid = s->st_uid; // NCB 12/9/02 oh->yst_gid = s->yst_uid; oh->yst_gid = s->st_gid; oh->yst_atime = s->st_atime; oh->yst_mtime = s->st_mtime; oh->yst_ctime = s->st_ctime; oh->yst_rdev = s->st_rdev; } if(t == YAFFS_OBJECT_TYPE_FILE) { oh->fileSize = s->st_size; } if(t == YAFFS_OBJECT_TYPE_HARDLINK) { oh->equivalentObjectId = equivalentObj; } if(t == YAFFS_OBJECT_TYPE_SYMLINK) { strncpy(oh->alias,alias,YAFFS_MAX_ALIAS_LENGTH); } if (convert_endian) { object_header_little_to_big_endian(oh); } return write_chunk(bytes,objId,0,0xffff); }