1b8bc0d8aSopenharmony_ci/* mnote-fuji-entry.c 2b8bc0d8aSopenharmony_ci * 3b8bc0d8aSopenharmony_ci * Copyright (c) 2002 Lutz Mueller <lutz@users.sourceforge.net> 4b8bc0d8aSopenharmony_ci * 5b8bc0d8aSopenharmony_ci * This library is free software; you can redistribute it and/or 6b8bc0d8aSopenharmony_ci * modify it under the terms of the GNU Lesser General Public 7b8bc0d8aSopenharmony_ci * License as published by the Free Software Foundation; either 8b8bc0d8aSopenharmony_ci * version 2 of the License, or (at your option) any later version. 9b8bc0d8aSopenharmony_ci * 10b8bc0d8aSopenharmony_ci * This library is distributed in the hope that it will be useful, 11b8bc0d8aSopenharmony_ci * but WITHOUT ANY WARRANTY; without even the implied warranty of 12b8bc0d8aSopenharmony_ci * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13b8bc0d8aSopenharmony_ci * Lesser General Public License for more details. 14b8bc0d8aSopenharmony_ci * 15b8bc0d8aSopenharmony_ci * You should have received a copy of the GNU Lesser General Public 16b8bc0d8aSopenharmony_ci * License along with this library; if not, write to the 17b8bc0d8aSopenharmony_ci * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 18b8bc0d8aSopenharmony_ci * Boston, MA 02110-1301 USA. 19b8bc0d8aSopenharmony_ci */ 20b8bc0d8aSopenharmony_ci 21b8bc0d8aSopenharmony_ci#include <stdlib.h> 22b8bc0d8aSopenharmony_ci#include <stdio.h> 23b8bc0d8aSopenharmony_ci#include <string.h> 24b8bc0d8aSopenharmony_ci 25b8bc0d8aSopenharmony_ci#include <config.h> 26b8bc0d8aSopenharmony_ci 27b8bc0d8aSopenharmony_ci#include <libexif/i18n.h> 28b8bc0d8aSopenharmony_ci 29b8bc0d8aSopenharmony_ci#include "mnote-fuji-entry.h" 30b8bc0d8aSopenharmony_ci 31b8bc0d8aSopenharmony_ci#define CF(format,target,v,maxlen) \ 32b8bc0d8aSopenharmony_ci{ \ 33b8bc0d8aSopenharmony_ci if (format != target) { \ 34b8bc0d8aSopenharmony_ci snprintf (v, maxlen, \ 35b8bc0d8aSopenharmony_ci _("Invalid format '%s', " \ 36b8bc0d8aSopenharmony_ci "expected '%s'."), \ 37b8bc0d8aSopenharmony_ci exif_format_get_name (format), \ 38b8bc0d8aSopenharmony_ci exif_format_get_name (target)); \ 39b8bc0d8aSopenharmony_ci break; \ 40b8bc0d8aSopenharmony_ci } \ 41b8bc0d8aSopenharmony_ci} 42b8bc0d8aSopenharmony_ci 43b8bc0d8aSopenharmony_ci#define CC(number,target,v,maxlen) \ 44b8bc0d8aSopenharmony_ci{ \ 45b8bc0d8aSopenharmony_ci if (number != target) { \ 46b8bc0d8aSopenharmony_ci snprintf (v, maxlen, \ 47b8bc0d8aSopenharmony_ci _("Invalid number of components (%i, " \ 48b8bc0d8aSopenharmony_ci "expected %i)."), (int) number, (int) target); \ 49b8bc0d8aSopenharmony_ci break; \ 50b8bc0d8aSopenharmony_ci } \ 51b8bc0d8aSopenharmony_ci} 52b8bc0d8aSopenharmony_ci 53b8bc0d8aSopenharmony_cistatic const struct { 54b8bc0d8aSopenharmony_ci MnoteFujiTag tag; 55b8bc0d8aSopenharmony_ci struct { 56b8bc0d8aSopenharmony_ci int index; 57b8bc0d8aSopenharmony_ci const char *string; 58b8bc0d8aSopenharmony_ci } elem[22]; 59b8bc0d8aSopenharmony_ci} items[] = { 60b8bc0d8aSopenharmony_ci#ifndef NO_VERBOSE_TAG_DATA 61b8bc0d8aSopenharmony_ci { MNOTE_FUJI_TAG_SHARPNESS, 62b8bc0d8aSopenharmony_ci { {1, N_("Softest")}, 63b8bc0d8aSopenharmony_ci {2, N_("Soft")}, 64b8bc0d8aSopenharmony_ci {3, N_("Normal")}, 65b8bc0d8aSopenharmony_ci {4, N_("Hard")}, 66b8bc0d8aSopenharmony_ci {5, N_("Hardest")}, 67b8bc0d8aSopenharmony_ci {0x0082, N_("Medium soft")}, 68b8bc0d8aSopenharmony_ci {0x0084, N_("Medium hard")}, 69b8bc0d8aSopenharmony_ci {0x8000, N_("Film simulation mode")}, 70b8bc0d8aSopenharmony_ci {0xFFFF, N_("Off")}, 71b8bc0d8aSopenharmony_ci {0, NULL}}}, 72b8bc0d8aSopenharmony_ci { MNOTE_FUJI_TAG_WHITE_BALANCE, 73b8bc0d8aSopenharmony_ci { {0, N_("Auto")}, 74b8bc0d8aSopenharmony_ci {0x100, N_("Daylight")}, 75b8bc0d8aSopenharmony_ci {0x200, N_("Cloudy")}, 76b8bc0d8aSopenharmony_ci {0x300, N_("Daylight fluorescent")}, 77b8bc0d8aSopenharmony_ci {0x301, N_("Day white fluorescent")}, 78b8bc0d8aSopenharmony_ci {0x302, N_("White fluorescent")}, 79b8bc0d8aSopenharmony_ci {0x400, N_("Incandescent")}, 80b8bc0d8aSopenharmony_ci {0x500, N_("Flash")}, 81b8bc0d8aSopenharmony_ci {0xF00, N_("Custom")}, 82b8bc0d8aSopenharmony_ci {0, NULL}}}, 83b8bc0d8aSopenharmony_ci { MNOTE_FUJI_TAG_COLOR, 84b8bc0d8aSopenharmony_ci { {0, N_("Standard")}, 85b8bc0d8aSopenharmony_ci {0x0080, N_("Medium high")}, 86b8bc0d8aSopenharmony_ci {0x0100, N_("High")}, 87b8bc0d8aSopenharmony_ci {0x0180, N_("Medium low")}, 88b8bc0d8aSopenharmony_ci {0x0200, N_("Original")}, 89b8bc0d8aSopenharmony_ci {0x0300, N_("Black & white")}, 90b8bc0d8aSopenharmony_ci {0x8000, N_("Film simulation mode")}, 91b8bc0d8aSopenharmony_ci {0, NULL}}}, 92b8bc0d8aSopenharmony_ci { MNOTE_FUJI_TAG_TONE, 93b8bc0d8aSopenharmony_ci { {0, N_("Standard")}, 94b8bc0d8aSopenharmony_ci {0x0080, N_("Medium hard")}, 95b8bc0d8aSopenharmony_ci {0x0100, N_("Hard")}, 96b8bc0d8aSopenharmony_ci {0x0180, N_("Medium soft")}, 97b8bc0d8aSopenharmony_ci {0x0200, N_("Original")}, 98b8bc0d8aSopenharmony_ci {0x8000, N_("Film simulation mode")}, 99b8bc0d8aSopenharmony_ci {0, NULL}}}, 100b8bc0d8aSopenharmony_ci { MNOTE_FUJI_TAG_FLASH_MODE, 101b8bc0d8aSopenharmony_ci { {0, N_("Auto")}, 102b8bc0d8aSopenharmony_ci {1, N_("On")}, 103b8bc0d8aSopenharmony_ci {2, N_("Off")}, 104b8bc0d8aSopenharmony_ci {3, N_("Red-eye reduction")}, 105b8bc0d8aSopenharmony_ci {0, NULL}}}, 106b8bc0d8aSopenharmony_ci { MNOTE_FUJI_TAG_MACRO, 107b8bc0d8aSopenharmony_ci { {0, N_("Off")}, 108b8bc0d8aSopenharmony_ci {1, N_("On")}, 109b8bc0d8aSopenharmony_ci {0, NULL}}}, 110b8bc0d8aSopenharmony_ci { MNOTE_FUJI_TAG_FOCUS_MODE, 111b8bc0d8aSopenharmony_ci { {0, N_("Auto")}, 112b8bc0d8aSopenharmony_ci {1, N_("Manual")}, 113b8bc0d8aSopenharmony_ci {0, NULL}}}, 114b8bc0d8aSopenharmony_ci { MNOTE_FUJI_TAG_SLOW_SYNC, 115b8bc0d8aSopenharmony_ci { {0, N_("Off")}, 116b8bc0d8aSopenharmony_ci {1, N_("On")}, 117b8bc0d8aSopenharmony_ci {0, NULL}}}, 118b8bc0d8aSopenharmony_ci { MNOTE_FUJI_TAG_PICTURE_MODE, 119b8bc0d8aSopenharmony_ci { {0, N_("Auto")}, 120b8bc0d8aSopenharmony_ci {1, N_("Portrait")}, 121b8bc0d8aSopenharmony_ci {2, N_("Landscape")}, 122b8bc0d8aSopenharmony_ci {4, N_("Sports")}, 123b8bc0d8aSopenharmony_ci {5, N_("Night")}, 124b8bc0d8aSopenharmony_ci {6, N_("Program AE")}, 125b8bc0d8aSopenharmony_ci {7, N_("Natural photo")}, 126b8bc0d8aSopenharmony_ci {8, N_("Vibration reduction")}, 127b8bc0d8aSopenharmony_ci {0x000A, N_("Sunset")}, 128b8bc0d8aSopenharmony_ci {0x000B, N_("Museum")}, 129b8bc0d8aSopenharmony_ci {0x000C, N_("Party")}, 130b8bc0d8aSopenharmony_ci {0x000D, N_("Flower")}, 131b8bc0d8aSopenharmony_ci {0x000E, N_("Text")}, 132b8bc0d8aSopenharmony_ci {0x000F, N_("NP & flash")}, 133b8bc0d8aSopenharmony_ci {0x0010, N_("Beach")}, 134b8bc0d8aSopenharmony_ci {0x0011, N_("Snow")}, 135b8bc0d8aSopenharmony_ci {0x0012, N_("Fireworks")}, 136b8bc0d8aSopenharmony_ci {0x0013, N_("Underwater")}, 137b8bc0d8aSopenharmony_ci {0x0100, N_("Aperture priority AE")}, 138b8bc0d8aSopenharmony_ci {0x0200, N_("Shutter priority AE")}, 139b8bc0d8aSopenharmony_ci {0x0300, N_("Manual exposure")}, 140b8bc0d8aSopenharmony_ci {0, NULL}}}, 141b8bc0d8aSopenharmony_ci { MNOTE_FUJI_TAG_CONT_TAKING, 142b8bc0d8aSopenharmony_ci { {0, N_("Off")}, 143b8bc0d8aSopenharmony_ci {1, N_("On")}, 144b8bc0d8aSopenharmony_ci {0, NULL}}}, 145b8bc0d8aSopenharmony_ci { MNOTE_FUJI_TAG_FINEPIX_COLOR, 146b8bc0d8aSopenharmony_ci { {0x00, N_("F-Standard")}, 147b8bc0d8aSopenharmony_ci {0x10, N_("F-Chrome")}, 148b8bc0d8aSopenharmony_ci {0x30, N_("F-B&W")}, 149b8bc0d8aSopenharmony_ci {0, NULL}}}, 150b8bc0d8aSopenharmony_ci { MNOTE_FUJI_TAG_BLUR_CHECK, 151b8bc0d8aSopenharmony_ci { {0, N_("No blur")}, 152b8bc0d8aSopenharmony_ci {1, N_("Blur warning")}, 153b8bc0d8aSopenharmony_ci {0, NULL}}}, 154b8bc0d8aSopenharmony_ci { MNOTE_FUJI_TAG_FOCUS_CHECK, 155b8bc0d8aSopenharmony_ci { {0, N_("Focus good")}, 156b8bc0d8aSopenharmony_ci {1, N_("Out of focus")}, 157b8bc0d8aSopenharmony_ci {0, NULL}}}, 158b8bc0d8aSopenharmony_ci { MNOTE_FUJI_TAG_AUTO_EXPOSURE_CHECK, 159b8bc0d8aSopenharmony_ci { {0, N_("AE good")}, 160b8bc0d8aSopenharmony_ci {1, N_("Over exposed")}, 161b8bc0d8aSopenharmony_ci {0, NULL}}}, 162b8bc0d8aSopenharmony_ci { MNOTE_FUJI_TAG_DYNAMIC_RANGE, 163b8bc0d8aSopenharmony_ci { {1, N_("Standard")}, 164b8bc0d8aSopenharmony_ci {3, N_("Wide")}, 165b8bc0d8aSopenharmony_ci {0, NULL}}}, 166b8bc0d8aSopenharmony_ci { MNOTE_FUJI_TAG_FILM_MODE, 167b8bc0d8aSopenharmony_ci { {0, N_("F0/Standard")}, 168b8bc0d8aSopenharmony_ci {0x0100, N_("F1/Studio portrait")}, 169b8bc0d8aSopenharmony_ci {0x0110, N_("F1a/Professional portrait")}, 170b8bc0d8aSopenharmony_ci {0x0120, N_("F1b/Professional portrait")}, 171b8bc0d8aSopenharmony_ci {0x0130, N_("F1c/Professional portrait")}, 172b8bc0d8aSopenharmony_ci {0x0200, N_("F2/Fujichrome")}, 173b8bc0d8aSopenharmony_ci {0x0300, N_("F3/Studio portrait Ex")}, 174b8bc0d8aSopenharmony_ci {0x0400, N_("F4/Velvia")}, 175b8bc0d8aSopenharmony_ci {0, NULL}}}, 176b8bc0d8aSopenharmony_ci { MNOTE_FUJI_TAG_DYNAMIC_RANGE_SETTING, 177b8bc0d8aSopenharmony_ci { {0, N_("Auto (100-400%)")}, 178b8bc0d8aSopenharmony_ci {1, N_("RAW")}, 179b8bc0d8aSopenharmony_ci {0x0100, N_("Standard (100%)")}, 180b8bc0d8aSopenharmony_ci {0x0200, N_("Wide1 (230%)")}, 181b8bc0d8aSopenharmony_ci {0x0201, N_("Wide2 (400%)")}, 182b8bc0d8aSopenharmony_ci {0x8000, N_("Film simulation mode")}, 183b8bc0d8aSopenharmony_ci {0, NULL}}}, 184b8bc0d8aSopenharmony_ci#endif 185b8bc0d8aSopenharmony_ci {0, {{0, NULL}}} 186b8bc0d8aSopenharmony_ci}; 187b8bc0d8aSopenharmony_ci 188b8bc0d8aSopenharmony_ci 189b8bc0d8aSopenharmony_cichar * 190b8bc0d8aSopenharmony_cimnote_fuji_entry_get_value (MnoteFujiEntry *entry, 191b8bc0d8aSopenharmony_ci char *val, unsigned int maxlen) 192b8bc0d8aSopenharmony_ci{ 193b8bc0d8aSopenharmony_ci ExifLong vl; 194b8bc0d8aSopenharmony_ci ExifSLong vsl; 195b8bc0d8aSopenharmony_ci ExifShort vs, vs2; 196b8bc0d8aSopenharmony_ci ExifSShort vss; 197b8bc0d8aSopenharmony_ci ExifRational vr; 198b8bc0d8aSopenharmony_ci ExifSRational vsr; 199b8bc0d8aSopenharmony_ci int i, j; 200b8bc0d8aSopenharmony_ci 201b8bc0d8aSopenharmony_ci if (!entry) return (NULL); 202b8bc0d8aSopenharmony_ci 203b8bc0d8aSopenharmony_ci memset (val, 0, maxlen); 204b8bc0d8aSopenharmony_ci maxlen--; 205b8bc0d8aSopenharmony_ci 206b8bc0d8aSopenharmony_ci switch (entry->tag) { 207b8bc0d8aSopenharmony_ci case MNOTE_FUJI_TAG_VERSION: 208b8bc0d8aSopenharmony_ci CF (entry->format, EXIF_FORMAT_UNDEFINED, val, maxlen); 209b8bc0d8aSopenharmony_ci CC (entry->components, 4, val, maxlen); 210b8bc0d8aSopenharmony_ci memcpy (val, entry->data, MIN(maxlen, entry->size)); 211b8bc0d8aSopenharmony_ci break; 212b8bc0d8aSopenharmony_ci case MNOTE_FUJI_TAG_SHARPNESS: 213b8bc0d8aSopenharmony_ci case MNOTE_FUJI_TAG_WHITE_BALANCE: 214b8bc0d8aSopenharmony_ci case MNOTE_FUJI_TAG_COLOR: 215b8bc0d8aSopenharmony_ci case MNOTE_FUJI_TAG_TONE: 216b8bc0d8aSopenharmony_ci case MNOTE_FUJI_TAG_FLASH_MODE: 217b8bc0d8aSopenharmony_ci case MNOTE_FUJI_TAG_MACRO: 218b8bc0d8aSopenharmony_ci case MNOTE_FUJI_TAG_FOCUS_MODE: 219b8bc0d8aSopenharmony_ci case MNOTE_FUJI_TAG_SLOW_SYNC: 220b8bc0d8aSopenharmony_ci case MNOTE_FUJI_TAG_PICTURE_MODE: 221b8bc0d8aSopenharmony_ci case MNOTE_FUJI_TAG_CONT_TAKING: 222b8bc0d8aSopenharmony_ci case MNOTE_FUJI_TAG_FINEPIX_COLOR: 223b8bc0d8aSopenharmony_ci case MNOTE_FUJI_TAG_BLUR_CHECK: 224b8bc0d8aSopenharmony_ci case MNOTE_FUJI_TAG_FOCUS_CHECK: 225b8bc0d8aSopenharmony_ci case MNOTE_FUJI_TAG_AUTO_EXPOSURE_CHECK: 226b8bc0d8aSopenharmony_ci case MNOTE_FUJI_TAG_DYNAMIC_RANGE: 227b8bc0d8aSopenharmony_ci case MNOTE_FUJI_TAG_FILM_MODE: 228b8bc0d8aSopenharmony_ci case MNOTE_FUJI_TAG_DYNAMIC_RANGE_SETTING: 229b8bc0d8aSopenharmony_ci CF (entry->format, EXIF_FORMAT_SHORT, val, maxlen); 230b8bc0d8aSopenharmony_ci CC (entry->components, 1, val, maxlen); 231b8bc0d8aSopenharmony_ci vs = exif_get_short (entry->data, entry->order); 232b8bc0d8aSopenharmony_ci 233b8bc0d8aSopenharmony_ci /* search the tag */ 234b8bc0d8aSopenharmony_ci for (i = 0; (items[i].tag && items[i].tag != entry->tag); i++); 235b8bc0d8aSopenharmony_ci if (!items[i].tag) { 236b8bc0d8aSopenharmony_ci snprintf (val, maxlen, 237b8bc0d8aSopenharmony_ci _("Internal error (unknown value %i)"), vs); 238b8bc0d8aSopenharmony_ci break; 239b8bc0d8aSopenharmony_ci } 240b8bc0d8aSopenharmony_ci 241b8bc0d8aSopenharmony_ci /* find the value */ 242b8bc0d8aSopenharmony_ci for (j = 0; items[i].elem[j].string && 243b8bc0d8aSopenharmony_ci (items[i].elem[j].index < vs); j++); 244b8bc0d8aSopenharmony_ci if (items[i].elem[j].index != vs) { 245b8bc0d8aSopenharmony_ci snprintf (val, maxlen, 246b8bc0d8aSopenharmony_ci _("Internal error (unknown value %i)"), vs); 247b8bc0d8aSopenharmony_ci break; 248b8bc0d8aSopenharmony_ci } 249b8bc0d8aSopenharmony_ci strncpy (val, _(items[i].elem[j].string), maxlen); 250b8bc0d8aSopenharmony_ci break; 251b8bc0d8aSopenharmony_ci case MNOTE_FUJI_TAG_FOCUS_POINT: 252b8bc0d8aSopenharmony_ci CF (entry->format, EXIF_FORMAT_SHORT, val, maxlen); 253b8bc0d8aSopenharmony_ci CC (entry->components, 2, val, maxlen); 254b8bc0d8aSopenharmony_ci vs = exif_get_short (entry->data, entry->order); 255b8bc0d8aSopenharmony_ci vs2 = exif_get_short (entry->data+2, entry->order); 256b8bc0d8aSopenharmony_ci snprintf (val, maxlen, "%i, %i", vs, vs2); 257b8bc0d8aSopenharmony_ci break; 258b8bc0d8aSopenharmony_ci case MNOTE_FUJI_TAG_MIN_FOCAL_LENGTH: 259b8bc0d8aSopenharmony_ci case MNOTE_FUJI_TAG_MAX_FOCAL_LENGTH: 260b8bc0d8aSopenharmony_ci CF (entry->format, EXIF_FORMAT_RATIONAL, val, maxlen); 261b8bc0d8aSopenharmony_ci CC (entry->components, 1, val, maxlen); 262b8bc0d8aSopenharmony_ci vr = exif_get_rational (entry->data, entry->order); 263b8bc0d8aSopenharmony_ci if (!vr.denominator) break; 264b8bc0d8aSopenharmony_ci snprintf (val, maxlen, _("%2.2f mm"), (double) vr.numerator / 265b8bc0d8aSopenharmony_ci vr.denominator); 266b8bc0d8aSopenharmony_ci break; 267b8bc0d8aSopenharmony_ci 268b8bc0d8aSopenharmony_ci default: 269b8bc0d8aSopenharmony_ci switch (entry->format) { 270b8bc0d8aSopenharmony_ci case EXIF_FORMAT_ASCII: 271b8bc0d8aSopenharmony_ci strncpy (val, (char *)entry->data, MIN(maxlen, entry->size)); 272b8bc0d8aSopenharmony_ci break; 273b8bc0d8aSopenharmony_ci case EXIF_FORMAT_SHORT: 274b8bc0d8aSopenharmony_ci vs = exif_get_short (entry->data, entry->order); 275b8bc0d8aSopenharmony_ci snprintf (val, maxlen, "%hu", vs); 276b8bc0d8aSopenharmony_ci break; 277b8bc0d8aSopenharmony_ci case EXIF_FORMAT_SSHORT: 278b8bc0d8aSopenharmony_ci vss = exif_get_sshort (entry->data, entry->order); 279b8bc0d8aSopenharmony_ci snprintf (val, maxlen, "%hi", vss); 280b8bc0d8aSopenharmony_ci break; 281b8bc0d8aSopenharmony_ci case EXIF_FORMAT_LONG: 282b8bc0d8aSopenharmony_ci vl = exif_get_long (entry->data, entry->order); 283b8bc0d8aSopenharmony_ci snprintf (val, maxlen, "%lu", (long unsigned) vl); 284b8bc0d8aSopenharmony_ci break; 285b8bc0d8aSopenharmony_ci case EXIF_FORMAT_SLONG: 286b8bc0d8aSopenharmony_ci vsl = exif_get_slong (entry->data, entry->order); 287b8bc0d8aSopenharmony_ci snprintf (val, maxlen, "%li", (long int) vsl); 288b8bc0d8aSopenharmony_ci break; 289b8bc0d8aSopenharmony_ci case EXIF_FORMAT_RATIONAL: 290b8bc0d8aSopenharmony_ci vr = exif_get_rational (entry->data, entry->order); 291b8bc0d8aSopenharmony_ci if (!vr.denominator) break; 292b8bc0d8aSopenharmony_ci snprintf (val, maxlen, "%2.4f", (double) vr.numerator / 293b8bc0d8aSopenharmony_ci vr.denominator); 294b8bc0d8aSopenharmony_ci break; 295b8bc0d8aSopenharmony_ci case EXIF_FORMAT_SRATIONAL: 296b8bc0d8aSopenharmony_ci vsr = exif_get_srational (entry->data, entry->order); 297b8bc0d8aSopenharmony_ci if (!vsr.denominator) break; 298b8bc0d8aSopenharmony_ci snprintf (val, maxlen, "%2.4f", (double) vsr.numerator / 299b8bc0d8aSopenharmony_ci vsr.denominator); 300b8bc0d8aSopenharmony_ci break; 301b8bc0d8aSopenharmony_ci case EXIF_FORMAT_UNDEFINED: 302b8bc0d8aSopenharmony_ci default: 303b8bc0d8aSopenharmony_ci snprintf (val, maxlen, _("%i bytes unknown data"), 304b8bc0d8aSopenharmony_ci entry->size); 305b8bc0d8aSopenharmony_ci break; 306b8bc0d8aSopenharmony_ci } 307b8bc0d8aSopenharmony_ci break; 308b8bc0d8aSopenharmony_ci } 309b8bc0d8aSopenharmony_ci 310b8bc0d8aSopenharmony_ci return (val); 311b8bc0d8aSopenharmony_ci} 312