~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to sql/discover.cc

  • Committer: brian
  • Date: 2008-07-03 12:39:14 UTC
  • Revision ID: brian@localhost.localdomain-20080703123914-lry82qf74f6cbyzs
Disabling myisam tools until incomming link patch from Monty

Show diffs side-by-side

added added

removed removed

Lines of Context:
13
13
   along with this program; if not, write to the Free Software
14
14
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
15
15
 
 
16
 
16
17
/**
17
18
  @file
18
19
 
19
20
  @brief
20
21
  Functions for discover of frm file from handler
21
22
*/
22
 
#include <drizzled/server_includes.h>
 
23
 
 
24
#include "mysql_priv.h"
 
25
#include <my_dir.h>
23
26
 
24
27
/**
25
28
  Read the contents of a .frm file.
39
42
  @retval
40
43
    3    Could not allocate data for read.  Could not read file
41
44
*/
42
 
int readfrm(const char *name, unsigned char **frmdata, size_t *len)
 
45
 
 
46
int readfrm(const char *name, uchar **frmdata, size_t *len)
43
47
{
44
48
  int    error;
45
49
  char   index_file[FN_REFLEN];
46
50
  File   file;
47
51
  size_t read_len;
48
 
  unsigned char *read_data;
 
52
  uchar *read_data;
49
53
  struct stat state;  
 
54
  DBUG_ENTER("readfrm");
 
55
  DBUG_PRINT("enter",("name: '%s'",name));
50
56
  
51
57
  *frmdata= NULL;      // In case of errors
52
58
  *len= 0;
53
59
  error= 1;
54
60
  if ((file=my_open(fn_format(index_file,name,"",reg_ext,
55
61
                              MY_UNPACK_FILENAME|MY_APPEND_EXT),
56
 
                    O_RDONLY,
 
62
                    O_RDONLY | O_SHARE,
57
63
                    MYF(0))) < 0)  
58
64
    goto err_end; 
59
65
  
70
76
    goto err;
71
77
 
72
78
  // Setup return data
73
 
  *frmdata= (unsigned char*) read_data;
 
79
  *frmdata= (uchar*) read_data;
74
80
  *len= read_len;
75
81
  error= 0;
76
82
  
77
83
 err:
78
84
  if (file > 0)
79
 
    my_close(file,MYF(MY_WME));
 
85
    VOID(my_close(file,MYF(MY_WME)));
80
86
  
81
87
 err_end:                     /* Here when no file */
82
 
  return(error);
 
88
  DBUG_RETURN (error);
83
89
} /* readfrm */
84
90
 
85
91
 
96
102
  @retval
97
103
    2    Could not write file
98
104
*/
99
 
int writefrm(const char *name, const unsigned char *frmdata, size_t len)
 
105
 
 
106
int writefrm(const char *name, const uchar *frmdata, size_t len)
100
107
{
101
108
  File file;
102
109
  char   index_file[FN_REFLEN];
103
110
  int error;
 
111
  DBUG_ENTER("writefrm");
 
112
  DBUG_PRINT("enter",("name: '%s' len: %lu ",name, (ulong) len));
104
113
 
105
114
  error= 0;
106
115
  if ((file=my_create(fn_format(index_file,name,"",reg_ext,
109
118
  {
110
119
    if (my_write(file, frmdata, len,MYF(MY_WME | MY_NABP)))
111
120
      error= 2;
112
 
    my_close(file,MYF(0));
 
121
    VOID(my_close(file,MYF(0)));
113
122
  }
114
 
  return(error);
 
123
  DBUG_RETURN(error);
115
124
} /* writefrm */
 
125
 
 
126
 
 
127
 
 
128
 
 
129