ferret 0.11.8.6 → 0.11.8.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 79d986336c6e1786037d5af14c9a046bacd03154
4
- data.tar.gz: e59ca1733e53263346275dc573e2ac8ea5b80ab6
3
+ metadata.gz: e72c061a77aa3e4cf6e82525a102ccf10517b949
4
+ data.tar.gz: dc4af1937f19310f827ddc8ecaead7745a0a1d25
5
5
  SHA512:
6
- metadata.gz: 1ca3fcc094d39e327d3844ebbe329b91f397daf08853bd4ef3217bc3ba630475511f8909d689172345aaaf6c0ce9f14b5fd0210bcdf9dca6b8ea8c8d22625427
7
- data.tar.gz: 5b0ae5d2659df9c5f2caca31fd38697924f165d749ce8d2d76fc0e60d1acd852cfdbd1e4478a0dba10ab2ae382a3e0587e84b3827da24ace703f31f5dbf82bb2
6
+ metadata.gz: dbf72dbe1900dceebee48f1cf38179beefaa98aff7ef4e67d987e8677ae1d41d0f15941b74cd4f779ac3061b9bbc59f51d5b9ecc0ff118ea9da82d18c23c369e
7
+ data.tar.gz: ec4021c84497bf407a7e44c6f9c19577b034ed76c8044d8e0494ece990f22a9384c8ae7b3c5f2183249c8c72c0726a0a1ad1d7c56c9a9eff741cebee4df87798
@@ -15,13 +15,10 @@ search for things in them later.
15
15
 
16
16
  $ sudo gem install ferret
17
17
 
18
- If you don't have rubygems installed you can still install Ferret. Just
19
- download one of the zipped up versions of Ferret, unzip it and change into the
20
- unzipped directory. Then run the following set of commands;
18
+ Or to build it from this git repository:
21
19
 
22
- $ ruby setup.rb config
23
- $ ruby setup.rb setup
24
- $ sudo ruby setup.rb install
20
+ $ cd ruby
21
+ $ rake install
25
22
 
26
23
  == Usage
27
24
 
data/Rakefile CHANGED
@@ -83,7 +83,9 @@ namespace :build do
83
83
  dest_fn = EXT_SRC_MAP[fn]
84
84
  # prepend lib files to avoid conflicts
85
85
  file dest_fn => fn do |t|
86
- ln_sf File.expand_path(fn), File.expand_path(dest_fn)
86
+ dest_path = File.expand_path(dest_fn)
87
+ rm_f dest_path
88
+ cp File.expand_path(fn), dest_path
87
89
 
88
90
  if fn =~ /stemmer/
89
91
  # flatten the directory structure for lib_stemmer
@@ -198,9 +200,9 @@ namespace :doc do
198
200
  rdoc.options << '--inline-source'
199
201
  rdoc.options << '--charset=utf-8'
200
202
  # rdoc.template = allison_template if allison_template
201
- rdoc.rdoc_files.include('README')
203
+ rdoc.rdoc_files.include('README.md')
202
204
  rdoc.rdoc_files.include('TODO')
203
- rdoc.rdoc_files.include('TUTORIAL')
205
+ rdoc.rdoc_files.include('TUTORIAL.md')
204
206
  rdoc.rdoc_files.include('MIT-LICENSE')
205
207
  rdoc.rdoc_files.include('lib/**/*.rb')
206
208
  rdoc.rdoc_files.include('ext/r_*.c')
@@ -218,7 +220,6 @@ end
218
220
  ##############################################################################
219
221
 
220
222
  PKG_FILES = FileList[
221
- 'setup.rb',
222
223
  '[-A-Z]*',
223
224
  'lib/**/*.rb',
224
225
  'lib/**/*.rhtml',
@@ -251,8 +252,7 @@ spec = Gem::Specification.new do |s|
251
252
  #### Author and project details.
252
253
  s.author = "David Balmain"
253
254
  s.email = "dbalmain@gmail.com"
254
- #s.homepage = "http://ferret.davebalmain.com/trac"
255
- s.homepage = "http://github.com/jkraemer/ferret"
255
+ s.homepage = "http://github.com/dbalmain/ferret"
256
256
  s.rubyforge_project = "ferret"
257
257
 
258
258
  s.has_rdoc = true
@@ -297,7 +297,7 @@ task :uninstall => :clobber do
297
297
  sh "#{SUDO}gem uninstall ferret"
298
298
  end
299
299
 
300
- desc "Same as :install but you must be rootgem"
300
+ desc "Same as :install but you must be root"
301
301
  task :root_install => :gem do
302
302
  sh "gem install pkg/ferret-#{Ferret::VERSION}.gem --no-rdoc --no-ri -l"
303
303
  end
File without changes
@@ -8,8 +8,8 @@
8
8
  This file is part of bzip2/libbzip2, a program and library for
9
9
  lossless, block-sorting data compression.
10
10
 
11
- bzip2/libbzip2 version 1.0.4 of 20 December 2006
12
- Copyright (C) 1996-2006 Julian Seward <jseward@bzip.org>
11
+ bzip2/libbzip2 version 1.0.6 of 6 September 2010
12
+ Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
13
13
 
14
14
  Please read the WARNING, DISCLAIMER and PATENTS sections in the
15
15
  README file.
@@ -8,8 +8,8 @@
8
8
  This file is part of bzip2/libbzip2, a program and library for
9
9
  lossless, block-sorting data compression.
10
10
 
11
- bzip2/libbzip2 version 1.0.4 of 20 December 2006
12
- Copyright (C) 1996-2006 Julian Seward <jseward@bzip.org>
11
+ bzip2/libbzip2 version 1.0.6 of 6 September 2010
12
+ Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
13
13
 
14
14
  Please read the WARNING, DISCLAIMER and PATENTS sections in the
15
15
  README file.
@@ -31,7 +31,6 @@
31
31
  #include "bzlib_private.h"
32
32
 
33
33
 
34
-
35
34
  /*---------------------------------------------------*/
36
35
  /*--- Compression stuff ---*/
37
36
  /*---------------------------------------------------*/
@@ -49,7 +48,7 @@ void BZ2_bz__AssertH__fail ( int errcode )
49
48
  "component, you should also report this bug to the author(s)\n"
50
49
  "of that program. Please make an effort to report this bug;\n"
51
50
  "timely and accurate bug reports eventually lead to higher\n"
52
- "quality software. Thanks. Julian Seward, 15 February 2005.\n\n",
51
+ "quality software. Thanks. Julian Seward, 10 December 2007.\n\n",
53
52
  errcode,
54
53
  BZ2_bzlibVersion()
55
54
  );
@@ -84,9 +83,6 @@ void BZ2_bz__AssertH__fail ( int errcode )
84
83
 
85
84
  exit(3);
86
85
  }
87
- #else
88
- void BZ2_bz__AssertH__fail ( int errcode ) { (void)errcode; }
89
- void bz_internal_error ( int errcode ) { (void)errcode; }
90
86
  #endif
91
87
 
92
88
 
@@ -106,7 +102,6 @@ static
106
102
  void* default_bzalloc ( void* opaque, Int32 items, Int32 size )
107
103
  {
108
104
  void* v = malloc ( items * size );
109
- (void)opaque; /* Ferret modification to remove compile warning */
110
105
  return v;
111
106
  }
112
107
 
@@ -114,7 +109,6 @@ static
114
109
  void default_bzfree ( void* opaque, void* addr )
115
110
  {
116
111
  if (addr != NULL) free ( addr );
117
- (void)opaque; /* Ferret modification to remove compile warning */
118
112
  }
119
113
 
120
114
 
@@ -604,6 +598,7 @@ Bool unRLE_obuf_to_output_FAST ( DState* s )
604
598
  UInt32 c_tPos = s->tPos;
605
599
  char* cs_next_out = s->strm->next_out;
606
600
  unsigned int cs_avail_out = s->strm->avail_out;
601
+ Int32 ro_blockSize100k = s->blockSize100k;
607
602
  /* end restore */
608
603
 
609
604
  UInt32 avail_out_INIT = cs_avail_out;
@@ -1511,7 +1506,6 @@ int BZ_API(BZ2_bzwrite) (BZFILE* b, void* buf, int len )
1511
1506
  int BZ_API(BZ2_bzflush) (BZFILE *b)
1512
1507
  {
1513
1508
  /* do nothing now... */
1514
- (void)b; /* Ferret modification to remove compile warning */
1515
1509
  return 0;
1516
1510
  }
1517
1511
 
@@ -8,8 +8,8 @@
8
8
  This file is part of bzip2/libbzip2, a program and library for
9
9
  lossless, block-sorting data compression.
10
10
 
11
- bzip2/libbzip2 version 1.0.4 of 20 December 2006
12
- Copyright (C) 1996-2006 Julian Seward <jseward@bzip.org>
11
+ bzip2/libbzip2 version 1.0.6 of 6 September 2010
12
+ Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
13
13
 
14
14
  Please read the WARNING, DISCLAIMER and PATENTS sections in the
15
15
  README file.
@@ -8,8 +8,8 @@
8
8
  This file is part of bzip2/libbzip2, a program and library for
9
9
  lossless, block-sorting data compression.
10
10
 
11
- bzip2/libbzip2 version 1.0.4 of 20 December 2006
12
- Copyright (C) 1996-2006 Julian Seward <jseward@bzip.org>
11
+ bzip2/libbzip2 version 1.0.6 of 6 September 2010
12
+ Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
13
13
 
14
14
  Please read the WARNING, DISCLAIMER and PATENTS sections in the
15
15
  README file.
@@ -8,8 +8,8 @@
8
8
  This file is part of bzip2/libbzip2, a program and library for
9
9
  lossless, block-sorting data compression.
10
10
 
11
- bzip2/libbzip2 version 1.0.4 of 20 December 2006
12
- Copyright (C) 1996-2006 Julian Seward <jseward@bzip.org>
11
+ bzip2/libbzip2 version 1.0.6 of 6 September 2010
12
+ Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
13
13
 
14
14
  Please read the WARNING, DISCLAIMER and PATENTS sections in the
15
15
  README file.
@@ -381,6 +381,13 @@ Int32 BZ2_decompress ( DState* s )
381
381
  es = -1;
382
382
  N = 1;
383
383
  do {
384
+ /* Check that N doesn't get too big, so that es doesn't
385
+ go negative. The maximum value that can be
386
+ RUNA/RUNB encoded is equal to the block size (post
387
+ the initial RLE), viz, 900k, so bounding N at 2
388
+ million should guard against overflow without
389
+ rejecting any legitimate inputs. */
390
+ if (N >= 2*1024*1024) RETURN(BZ_DATA_ERROR);
384
391
  if (nextSym == BZ_RUNA) es = es + (0+1) * N; else
385
392
  if (nextSym == BZ_RUNB) es = es + (1+1) * N;
386
393
  N = N * 2;
@@ -485,15 +492,28 @@ Int32 BZ2_decompress ( DState* s )
485
492
  RETURN(BZ_DATA_ERROR);
486
493
 
487
494
  /*-- Set up cftab to facilitate generation of T^(-1) --*/
495
+ /* Check: unzftab entries in range. */
496
+ for (i = 0; i <= 255; i++) {
497
+ if (s->unzftab[i] < 0 || s->unzftab[i] > nblock)
498
+ RETURN(BZ_DATA_ERROR);
499
+ }
500
+ /* Actually generate cftab. */
488
501
  s->cftab[0] = 0;
489
502
  for (i = 1; i <= 256; i++) s->cftab[i] = s->unzftab[i-1];
490
503
  for (i = 1; i <= 256; i++) s->cftab[i] += s->cftab[i-1];
504
+ /* Check: cftab entries in range. */
491
505
  for (i = 0; i <= 256; i++) {
492
506
  if (s->cftab[i] < 0 || s->cftab[i] > nblock) {
493
507
  /* s->cftab[i] can legitimately be == nblock */
494
508
  RETURN(BZ_DATA_ERROR);
495
509
  }
496
510
  }
511
+ /* Check: cftab entries non-descending. */
512
+ for (i = 1; i <= 256; i++) {
513
+ if (s->cftab[i-1] > s->cftab[i]) {
514
+ RETURN(BZ_DATA_ERROR);
515
+ }
516
+ }
497
517
 
498
518
  s->state_out_len = 0;
499
519
  s->state_out_ch = 0;
@@ -8,8 +8,8 @@
8
8
  This file is part of bzip2/libbzip2, a program and library for
9
9
  lossless, block-sorting data compression.
10
10
 
11
- bzip2/libbzip2 version 1.0.4 of 20 December 2006
12
- Copyright (C) 1996-2006 Julian Seward <jseward@bzip.org>
11
+ bzip2/libbzip2 version 1.0.6 of 6 September 2010
12
+ Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
13
13
 
14
14
  Please read the WARNING, DISCLAIMER and PATENTS sections in the
15
15
  README file.
@@ -8,8 +8,8 @@
8
8
  This file is part of bzip2/libbzip2, a program and library for
9
9
  lossless, block-sorting data compression.
10
10
 
11
- bzip2/libbzip2 version 1.0.4 of 20 December 2006
12
- Copyright (C) 1996-2006 Julian Seward <jseward@bzip.org>
11
+ bzip2/libbzip2 version 1.0.6 of 6 September 2010
12
+ Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
13
13
 
14
14
  Please read the WARNING, DISCLAIMER and PATENTS sections in the
15
15
  README file.
@@ -43,6 +43,8 @@ void bv_scan_reset(BitVector *bv)
43
43
 
44
44
  int bv_eq(BitVector *bv1, BitVector *bv2)
45
45
  {
46
+ u32 *bits, *bits2;
47
+ int min_size, word_size, ext_word_size = 0, i;
46
48
  if (bv1 == bv2) {
47
49
  return true;
48
50
  }
@@ -51,12 +53,10 @@ int bv_eq(BitVector *bv1, BitVector *bv2)
51
53
  return false;
52
54
  }
53
55
 
54
- u32 *bits = bv1->bits;
55
- u32 *bits2 = bv2->bits;
56
- int min_size = min2(bv1->size, bv2->size);
57
- int word_size = TO_WORD(min_size);
58
- int ext_word_size = 0;
59
- int i;
56
+ bits = bv1->bits;
57
+ bits2 = bv2->bits;
58
+ min_size = min2(bv1->size, bv2->size);
59
+ word_size = TO_WORD(min_size);
60
60
 
61
61
  for (i = 0; i < word_size; i++) {
62
62
  if (bits[i] != bits2[i]) {
@@ -8,8 +8,8 @@
8
8
  This file is part of bzip2/libbzip2, a program and library for
9
9
  lossless, block-sorting data compression.
10
10
 
11
- bzip2/libbzip2 version 1.0.4 of 20 December 2006
12
- Copyright (C) 1996-2006 Julian Seward <jseward@bzip.org>
11
+ bzip2/libbzip2 version 1.0.6 of 6 September 2010
12
+ Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
13
13
 
14
14
  Please read the WARNING, DISCLAIMER and PATENTS sections in the
15
15
  README file.
@@ -8,8 +8,8 @@
8
8
  This file is part of bzip2/libbzip2, a program and library for
9
9
  lossless, block-sorting data compression.
10
10
 
11
- bzip2/libbzip2 version 1.0.4 of 20 December 2006
12
- Copyright (C) 1996-2006 Julian Seward <jseward@bzip.org>
11
+ bzip2/libbzip2 version 1.0.6 of 6 September 2010
12
+ Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
13
13
 
14
14
  Please read the WARNING, DISCLAIMER and PATENTS sections in the
15
15
  README file.
@@ -36,7 +36,7 @@
36
36
 
37
37
  /*-- General stuff. --*/
38
38
 
39
- #define BZ_VERSION "1.0.4, 20-Dec-2006"
39
+ #define BZ_VERSION "1.0.6, 6-Sept-2010"
40
40
 
41
41
  typedef char Char;
42
42
  typedef unsigned char Bool;
@@ -442,11 +442,15 @@ typedef
442
442
  /*-- Macros for decompression. --*/
443
443
 
444
444
  #define BZ_GET_FAST(cccc) \
445
+ /* c_tPos is unsigned, hence test < 0 is pointless. */ \
446
+ if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \
445
447
  s->tPos = s->tt[s->tPos]; \
446
448
  cccc = (UChar)(s->tPos & 0xff); \
447
449
  s->tPos >>= 8;
448
450
 
449
451
  #define BZ_GET_FAST_C(cccc) \
452
+ /* c_tPos is unsigned, hence test < 0 is pointless. */ \
453
+ if (c_tPos >= (UInt32)100000 * (UInt32)ro_blockSize100k) return True; \
450
454
  c_tPos = c_tt[c_tPos]; \
451
455
  cccc = (UChar)(c_tPos & 0xff); \
452
456
  c_tPos >>= 8;
@@ -469,8 +473,10 @@ typedef
469
473
  (((UInt32)s->ll16[i]) | (GET_LL4(i) << 16))
470
474
 
471
475
  #define BZ_GET_SMALL(cccc) \
472
- cccc = BZ2_indexIntoF ( s->tPos, s->cftab ); \
473
- s->tPos = GET_LL(s->tPos);
476
+ /* c_tPos is unsigned, hence test < 0 is pointless. */ \
477
+ if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \
478
+ cccc = BZ2_indexIntoF ( s->tPos, s->cftab ); \
479
+ s->tPos = GET_LL(s->tPos);
474
480
 
475
481
 
476
482
  /*-- externs for decompression. --*/
@@ -215,7 +215,7 @@ Store *open_cmpd_store(Store *store, const char *name)
215
215
  int count, i;
216
216
  off_t offset;
217
217
  char *fname;
218
- FileEntry *entry = NULL;
218
+ FileEntry *volatile entry = NULL;
219
219
  Store *new_store = NULL;
220
220
  CompoundStore *volatile cmpd = NULL;
221
221
  InStream *volatile is = NULL;
@@ -59,9 +59,6 @@ void df_destroy(DocField *df)
59
59
  */
60
60
  char *df_to_s(DocField *df)
61
61
  {
62
- #define APPEND(dst, src) ((dst)[0] = (src)[0], 1)
63
- #define APPEND2(dst, src) (APPEND(dst, src), APPEND(dst+1, src+1), 2)
64
-
65
62
  int i, len = 0, namelen = sym_len(df->name);
66
63
  char *str, *s;
67
64
  for (i = 0; i < df->size; i++) {
@@ -70,23 +67,23 @@ char *df_to_s(DocField *df)
70
67
  s = str = ALLOC_N(char, namelen + len + 5);
71
68
  memcpy(s, df->name, namelen);
72
69
  s += namelen;
73
- s += APPEND2(s, ": ");
70
+ s = strapp(s, ": ");
74
71
 
75
72
  if (df->size > 1) {
76
- s += APPEND(s, "[");
73
+ s = strapp(s, "[");
77
74
  }
78
75
  for (i = 0; i < df->size; i++) {
79
76
  if (i != 0) {
80
- s += APPEND2(s, ", ");
77
+ s = strapp(s, ", ");
81
78
  }
82
- s += APPEND(s, "\"");
79
+ s = strapp(s, "\"");
83
80
  memcpy(s, df->data[i], df->lengths[i]);
84
81
  s += df->lengths[i];
85
- s += APPEND(s, "\"");
82
+ s = strapp(s, "\"");
86
83
  }
87
84
 
88
85
  if (df->size > 1) {
89
- s += APPEND(s, "]");
86
+ s = strapp(s, "]");
90
87
  }
91
88
  *s = 0;
92
89
  return str;
@@ -20,8 +20,8 @@ static const char *const ERROR_TYPES[] = {
20
20
  "Lock Error"
21
21
  };
22
22
 
23
- char *const UNSUPPORTED_ERROR_MSG = "Unsupported operation";
24
- char *const EOF_ERROR_MSG = "Read past end of file";
23
+ const char *const UNSUPPORTED_ERROR_MSG = "Unsupported operation";
24
+ const char *const EOF_ERROR_MSG = "Read past end of file";
25
25
  char xmsg_buffer[XMSG_BUFFER_SIZE];
26
26
  char xmsg_buffer_final[XMSG_BUFFER_SIZE];
27
27
 
@@ -98,8 +98,8 @@ extern "C" {
98
98
  #define FRT_INDEX_ERROR 11
99
99
  #define FRT_LOCK_ERROR 12
100
100
 
101
- extern char *const FRT_UNSUPPORTED_ERROR_MSG;
102
- extern char *const FRT_EOF_ERROR_MSG;
101
+ extern const char *const FRT_UNSUPPORTED_ERROR_MSG;
102
+ extern const char *const FRT_EOF_ERROR_MSG;
103
103
 
104
104
  typedef struct frt_xcontext_t
105
105
  {
@@ -234,7 +234,7 @@ static void string_handle_term(void *index_ptr,
234
234
  StringIndex *index = (StringIndex *)index_ptr;
235
235
  if (index->v_size >= index->v_capa) {
236
236
  index->v_capa *= 2;
237
- index->values = REALLOC_N(index->values, char *, index->v_capa);
237
+ REALLOC_N(index->values, char *, index->v_capa);
238
238
  }
239
239
  index->values[index->v_size] = estrdup(text);
240
240
  while (tde->next(tde)) {
@@ -3,6 +3,7 @@
3
3
  #include "hash.h"
4
4
  #include <stdarg.h>
5
5
  #include <stdio.h>
6
+ #include <stdlib.h>
6
7
  #include <string.h>
7
8
  #include <errno.h>
8
9
  #include <assert.h>
@@ -45,7 +46,7 @@ int scmp(const void *p1, const void *p2)
45
46
  return strcmp(*(char **) p1, *(char **) p2);
46
47
  }
47
48
 
48
- void frt_strsort(char **str_array, int size)
49
+ void strsort(char **str_array, int size)
49
50
  {
50
51
  qsort(str_array, size, sizeof(char *), &scmp);
51
52
  }
@@ -165,6 +166,20 @@ char *dbl_to_s(char *buf, double num)
165
166
  return buf;
166
167
  }
167
168
 
169
+ /**
170
+ * strapp: appends a string up to, but not including the \0 character to the
171
+ * end of a string returning a pointer to the next unassigned character in the
172
+ * string.
173
+ */
174
+ char *strapp(char *dst, const char *src) {
175
+ while (*src != '\0') {
176
+ *dst = *src;
177
+ ++dst;
178
+ ++src;
179
+ }
180
+ return dst;
181
+ }
182
+
168
183
  /* strfmt: like sprintf except that it allocates memory for the string */
169
184
  char *vstrfmt(const char *fmt, va_list args)
170
185
  {
@@ -172,7 +187,7 @@ char *vstrfmt(const char *fmt, va_list args)
172
187
  char *p = (char *) fmt, *q;
173
188
  int len = (int) strlen(fmt) + 1;
174
189
  int slen, curlen;
175
- char *s;
190
+ const char *s;
176
191
  long l;
177
192
  double d;
178
193
 
@@ -248,36 +263,17 @@ void dummy_free(void *p)
248
263
  #define CMD_BUF_SIZE (128 + FILENAME_MAX)
249
264
  /* need to declare this as it is masked by default in linux */
250
265
 
251
- static char *build_shell_command(const char *gdb_filename)
266
+ static char *build_shell_command()
252
267
  {
253
268
  int pid = getpid();
254
269
  char *buf = ALLOC_N(char, CMD_BUF_SIZE);
255
270
  char *command =
256
- "gdb -quiet -command=%s %s %d 2>/dev/null | grep '^[ #]'";
271
+ "gdb -quiet -ex='bt' -ex='quit' %s %d 2>/dev/null | grep '^[ #]'";
257
272
 
258
- snprintf(buf, CMD_BUF_SIZE, command, gdb_filename, progname(), pid);
273
+ snprintf(buf, CMD_BUF_SIZE, command, progname(), pid);
259
274
  return buf;
260
275
  }
261
276
 
262
- /* Returns the fd to the tempfile */
263
- static int build_tempfile(char *name, size_t max_size)
264
- {
265
- char *tmpdir = getenv("TMPDIR");
266
-
267
- snprintf(name, max_size, "%s/frt.XXXXXXXXXX", tmpdir ? tmpdir : "/tmp");
268
- return mkstemp(name);
269
- }
270
-
271
- static char *build_gdb_commandfile()
272
- {
273
- const char *commands = "bt\nquit\n";
274
- char *filename = ALLOC_N(char, FILENAME_MAX);
275
- int fd = build_tempfile(filename, FILENAME_MAX);
276
- if (fd < 0) { return NULL; }
277
- write(fd, commands, strlen(commands));
278
- close(fd);
279
- return filename;
280
- }
281
277
  #endif
282
278
 
283
279
  /**
@@ -290,12 +286,7 @@ char *get_stacktrace()
290
286
  char *gdb_filename = NULL, *buf = NULL, *stack = NULL;
291
287
  int offset = -BUFFER_SIZE;
292
288
 
293
- if ( !(gdb_filename = build_gdb_commandfile()) ) {
294
- fprintf(EXCEPTION_STREAM,
295
- "Unable to build gdb command file\n");
296
- goto cleanup;
297
- }
298
- if ( !(buf = build_shell_command(gdb_filename)) ) {
289
+ if ( !(buf = build_shell_command()) ) {
299
290
  fprintf(EXCEPTION_STREAM,
300
291
  "Unable to build stacktrace shell command\n");
301
292
  goto cleanup;