1 /* Select specific element in archive. 2 Copyright (C) 1998, 1999, 2000, 2002 Red Hat, Inc. 3 Contributed by Ulrich Drepper <drepper (at) redhat.com>, 1998. 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation, version 2. 8 9 This program is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 GNU General Public License for more details. 13 14 You should have received a copy of the GNU General Public License 15 along with this program; if not, write to the Free Software Foundation, 16 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ 17 18 #ifdef HAVE_CONFIG_H 19 # include <config.h> 20 #endif 21 22 #include <libelf.h> 23 #include <stddef.h> 24 25 #include "libelfP.h" 26 27 28 size_t 29 elf_rand (elf, offset) 30 Elf *elf; 31 size_t offset; 32 { 33 /* Be gratious, the specs demand it. */ 34 if (elf == NULL || elf->kind != ELF_K_AR) 35 return 0; 36 37 /* Save the old offset and set the offset. */ 38 elf->state.ar.offset = elf->start_offset + offset; 39 40 /* Get the next archive header. */ 41 if (__libelf_next_arhdr (elf) != 0) 42 { 43 /* Mark the archive header as unusable. */ 44 elf->state.ar.elf_ar_hdr.ar_name = NULL; 45 return 0; 46 } 47 48 return offset; 49 } 50