~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to libdrizzle/client.c

Merged from Andrey.

Show diffs side-by-side

added added

removed removed

Lines of Context:
244
244
#endif /* HAVE_POLL */
245
245
}
246
246
 
 
247
 
 
248
#if defined(HAVE_GETPWUID) && defined(NO_GETPWUID_DECL)
 
249
struct passwd *getpwuid(uid_t);
 
250
char* getlogin(void);
 
251
#endif
 
252
 
 
253
static void read_user_name(char *name)
 
254
{
 
255
  if (geteuid() == 0)
 
256
    (void) strmov(name,"root");    /* allow use of surun */
 
257
  else
 
258
  {
 
259
#ifdef HAVE_GETPWUID
 
260
    struct passwd *skr;
 
261
    const char *str;
 
262
    if ((str=getlogin()) == NULL)
 
263
    {
 
264
      if ((skr=getpwuid(geteuid())) != NULL)
 
265
  str=skr->pw_name;
 
266
      else if (!(str=getenv("USER")) && !(str=getenv("LOGNAME")) &&
 
267
         !(str=getenv("LOGIN")))
 
268
  str="UNKNOWN_USER";
 
269
    }
 
270
    (void) strmake(name,str,USERNAME_LENGTH);
 
271
#elif HAVE_CUSERID
 
272
    (void) cuserid(name);
 
273
#else
 
274
    strmov(name,"UNKNOWN_USER");
 
275
#endif
 
276
  }
 
277
  return;
 
278
}
 
279
 
 
280
 
247
281
/**
248
282
  Set the internal error message to DRIZZLE handler
249
283
 
2247
2281
****************************************************************************/
2248
2282
 
2249
2283
/* DRIZZLE_RES */
2250
 
uint64_t STDCALL drizzle_num_rows(DRIZZLE_RES *res)
 
2284
uint64_t STDCALL drizzle_num_rows(const DRIZZLE_RES *res)
2251
2285
{
2252
2286
  return res->row_count;
2253
2287
}
2254
2288
 
2255
 
unsigned int STDCALL drizzle_num_fields(DRIZZLE_RES *res)
 
2289
unsigned int STDCALL drizzle_num_fields(const DRIZZLE_RES *res)
2256
2290
{
2257
2291
  return res->field_count;
2258
2292
}
2259
2293
 
2260
 
uint STDCALL drizzle_errno(DRIZZLE *drizzle)
 
2294
uint STDCALL drizzle_errno(const DRIZZLE *drizzle)
2261
2295
{
2262
2296
  return drizzle ? drizzle->net.last_errno : drizzle_server_last_errno;
2263
2297
}
2264
2298
 
2265
2299
 
2266
 
const char * STDCALL drizzle_error(DRIZZLE *drizzle)
 
2300
const char * STDCALL drizzle_error(const DRIZZLE *drizzle)
2267
2301
{
2268
2302
  return drizzle ? drizzle->net.last_error : drizzle_server_last_error;
2269
2303
}
2287
2321
*/
2288
2322
 
2289
2323
uint32_t STDCALL
2290
 
drizzle_get_server_version(DRIZZLE *drizzle)
 
2324
drizzle_get_server_version(const DRIZZLE *drizzle)
2291
2325
{
2292
2326
  uint major, minor, version;
2293
2327
  char *pos= drizzle->server_version, *end_pos;