libexplain
1.4.D001
|
00001 /* 00002 * libexplain - Explain errno values returned by libc functions 00003 * Copyright (C) 2009, 2013 Peter Miller 00004 * 00005 * This program is free software; you can redistribute it and/or modify 00006 * it under the terms of the GNU Lesser General Public License as 00007 * published by the Free Software Foundation; either version 3 of the 00008 * License, or (at your option) any later version. 00009 * 00010 * This program is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 * Lesser General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU Lesser General Public License 00016 * along with this program. If not, see <http://www.gnu.org/licenses/>. 00017 */ 00018 00019 #include <libexplain/buffer/off_t.h> 00020 00021 00022 void 00023 explain_buffer_off_t(explain_string_buffer_t *sb, off_t value) 00024 { 00025 /* 00026 * This is tricky. On BSD* it is always 64 bits. On Linux the 00027 * number of bits depends on things discovered by ./configure, 00028 * usually 64-bits the way libexplain uses it. 00029 * 00030 * It is also slightly undefined wherther or not off_t is signed. 00031 * The code will need to be sanitized if it can ever be unsigned. 00032 * (Is the a soff_t to go with it, analogous to ssize_t for size_t?) 00033 * 00034 * Is there an off_t modifier for printf, analogous to 'z' for size_t? 00035 */ 00036 #if SIZEOF_OFF_T > SIZEOF_LONG 00037 explain_string_buffer_printf(sb, "%lld", (long long)value); 00038 #else 00039 explain_string_buffer_printf(sb, "%ld", (long)value); 00040 #endif 00041 } 00042 00043 00044 /* vim: set ts=8 sw=4 et : */