亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sql_dbcreator.c

?? 打魔獸戰網的都知道他是什么
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. */#include "common/setup_before.h"#ifdef WITH_SQL#include <stdio.h>#ifdef STDC_HEADERS# include <stdlib.h>#else# ifdef HAVE_MALLOC_H#  include <malloc.h># endif#endif#ifdef HAVE_STRING_H# include <string.h>#else# ifdef HAVE_STRINGS_H#  include <strings.h># endif#endif#define  SQL_DBCREATOR_INTERNAL_ACCESS#include "sql_dbcreator.h"#undef   SQL_DBCREATOR_INTERNAL_ACCESS#include "storage_sql.h"#include "common/eventlog.h"#include "common/util.h"#include "compat/strdup.h"#include "common/list.h"#include "common/xalloc.h"#include "common/xstr.h"#include "prefs.h"#include "common/setup_after.h"t_elem  * curr_table  = NULL;t_elem  * curr_column = NULL;t_elem  * curr_cmd    = NULL;t_db_layout * db_layout;static void sql_escape_command(char *escape, const char *from, int len);t_column * create_column(char * name, char * value, char * mode, char * extra_cmd){  t_column * column;    if (!(name))    {      eventlog(eventlog_level_error,__FUNCTION__,"got NULL column name");      return NULL;    }    if (!(value))    {      eventlog(eventlog_level_error,__FUNCTION__,"got NULL column value");      return NULL;    }    column = xmalloc(sizeof(t_column));  column->name  = xstrdup(name);  column->value = xstrdup(value);  if (mode && extra_cmd)  {	  column->mode      = xstrdup(mode);	  column->extra_cmd = xstrdup(extra_cmd);  }  else  {	  column->mode      = NULL;	  column->extra_cmd = NULL;  }  return column;};void dispose_column(t_column * column){  if (column)    {      if (column->name)      xfree((void *)column->name);      if (column->value)     xfree((void *)column->value);      if (column->mode)      xfree((void *)column->mode);      if (column->extra_cmd) xfree((void *)column->extra_cmd);      xfree((void *)column);    }}t_sqlcommand * create_sqlcommand(char * sql_command, char * mode, char * extra_cmd){  t_sqlcommand * sqlcommand;    if (!(sql_command))  {    eventlog(eventlog_level_error,__FUNCTION__,"got NULL sql_command");    return NULL;  }    sqlcommand = xmalloc(sizeof(t_sqlcommand));  sqlcommand->sql_command = xstrdup(sql_command);  if (mode && extra_cmd)  {    sqlcommand->mode      = xstrdup(mode);    sqlcommand->extra_cmd = xstrdup(extra_cmd);  }  else  {    sqlcommand->mode      = NULL;    sqlcommand->extra_cmd = NULL;  }  return sqlcommand;}void dispose_sqlcommand(t_sqlcommand * sqlcommand){  if (sqlcommand)  {    if (sqlcommand->sql_command) xfree((void *)sqlcommand->sql_command);    if (sqlcommand->mode) xfree((void *)sqlcommand->mode);    if (sqlcommand->extra_cmd) xfree((void *)sqlcommand->extra_cmd);    xfree(sqlcommand);  }}t_table * create_table(char * name){  t_table * table;    if (!(name))    {      eventlog(eventlog_level_error,__FUNCTION__,"got NULL table name");      return NULL;    }    table = xmalloc(sizeof(t_table));  table->name = xstrdup(name);  table->columns = list_create();  table->sql_commands = list_create();    return table;}void dispose_table(t_table * table){  t_elem * curr;  t_column * column;  t_sqlcommand * sql_command;    if (table)    {      if (table->name) xfree((void *)table->name);      // free list      if (table->columns)        {          LIST_TRAVERSE(table->columns,curr)	    {	      if (!(column = elem_get_data(curr)))		{		  eventlog(eventlog_level_error,__FUNCTION__,"found NULL entry in list");		  continue;		}	      dispose_column(column);	      list_remove_elem(table->columns,&curr);	    }	  	  list_destroy(table->columns);        }      if (table->sql_commands)        {          LIST_TRAVERSE(table->sql_commands,curr)	    {	      if (!(sql_command = elem_get_data(curr)))		{		  eventlog(eventlog_level_error,__FUNCTION__,"found NULL entry in list");		  continue;		}	      dispose_sqlcommand(sql_command);	      list_remove_elem(table->sql_commands,&curr);	    }	  	  list_destroy(table->sql_commands);        }                  xfree((void *)table);    }}void table_add_column(t_table * table, t_column * column){  if ((table) && (column))    {      list_append_data(table->columns,column);    }}void table_add_sql_command(t_table * table, t_sqlcommand * sql_command){  if ((table) && (sql_command))    {      list_append_data(table->sql_commands,sql_command);    }}t_db_layout * create_db_layout(){  t_db_layout * db_layout;    db_layout = xmalloc(sizeof(t_db_layout));  db_layout->tables = list_create();    return db_layout;}void dispose_db_layout(t_db_layout * db_layout){  t_elem  * curr;  t_table * table;   if (db_layout)    {      if (db_layout->tables)        {          LIST_TRAVERSE(db_layout->tables,curr)	    {	      if (!(table = elem_get_data(curr)))		{		  eventlog(eventlog_level_error,__FUNCTION__,"found NULL entry in list");		  continue;		}	      dispose_table(table);	      list_remove_elem(db_layout->tables,&curr);	    }          list_destroy(db_layout->tables);        }      xfree((void *)db_layout);    }  }void db_layout_add_table(t_db_layout * db_layout, t_table * table){  if ((db_layout) && (table))    {      list_append_data(db_layout->tables,table);    }}t_table * db_layout_get_first_table(t_db_layout * db_layout){  t_table * table;  curr_column = NULL;  if (!(db_layout))  {    eventlog(eventlog_level_error,__FUNCTION__,"got NULL db_layout");    return NULL;  }  if (!(db_layout->tables))  {    eventlog(eventlog_level_error,__FUNCTION__,"found NULL db_layout->tables");    return NULL;  }  if (!(curr_table = list_get_first(db_layout->tables)))  {    eventlog(eventlog_level_error,__FUNCTION__,"db_layout has no tables");    return NULL;  }  if (!(table = elem_get_data(curr_table)))  {    eventlog(eventlog_level_error,__FUNCTION__,"got NULL elem in list");    return NULL;  }  return table;}t_table * db_layout_get_next_table(t_db_layout * db_layout){  t_table * table;  curr_column = NULL;  if (!(curr_table))  {    eventlog(eventlog_level_error,__FUNCTION__,"got NULL curr_table");    return NULL;  }  if (!(curr_table = elem_get_next(db_layout->tables, curr_table))) return NULL;  if (!(table = elem_get_data(curr_table)))  {    eventlog(eventlog_level_error,__FUNCTION__,"got NULL elem in list");    return NULL;  }  return table;}t_column * table_get_first_column(t_table * table){  t_column * column;  if (!(table))  {    eventlog(eventlog_level_error,__FUNCTION__,"got NULL table");    return NULL;  }  if (!(table->columns))  {    eventlog(eventlog_level_error,__FUNCTION__,"got NULL table->columns");    return NULL;  }  if (!(curr_column = list_get_first(table->columns)))  {    eventlog(eventlog_level_error,__FUNCTION__,"table has no columns");    return NULL;  }  if (!(column = elem_get_data(curr_column)))  {    eventlog(eventlog_level_error,__FUNCTION__,"got NULL elem in list");    return NULL;  }  return column;}t_column * table_get_next_column(t_table * table){  t_column * column;  if (!(curr_column))  {    eventlog(eventlog_level_error,__FUNCTION__,"got NULL curr_column");    return NULL;  }  if (!(curr_column = elem_get_next(table->columns, curr_column))) return NULL;  if (!(column = elem_get_data(curr_column)))  {    eventlog(eventlog_level_error,__FUNCTION__,"got NULL elem in list");    return NULL;  }  return column;}t_sqlcommand * table_get_first_sql_command(t_table * table){  t_sqlcommand * sql_command;  if (!(table))  {    eventlog(eventlog_level_error,__FUNCTION__,"got NULL table");    return NULL;  }  if (!(table->sql_commands))  {    eventlog(eventlog_level_error,__FUNCTION__,"got NULL table->sql_commands");    return NULL;  }  if (!(curr_cmd = list_get_first(table->sql_commands)))  {    return NULL;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区二区视频| 亚洲香蕉伊在人在线观| 91精品国产综合久久香蕉的特点 | 91麻豆精品久久久久蜜臀| 99精品视频中文字幕| 国产成人免费9x9x人网站视频| 视频在线观看91| 麻豆中文一区二区| 美女久久久精品| 精品一区精品二区高清| 国产成人免费av在线| 成人国产精品免费| 91一区二区三区在线观看| 成人黄色777网| 欧美影视一区二区三区| 欧美高清视频在线高清观看mv色露露十八| 欧美综合欧美视频| 欧美一级免费大片| 精品国产欧美一区二区| 国产日产欧美一区二区视频| 国产精品嫩草影院com| 亚洲黄网站在线观看| 日日骚欧美日韩| 九色综合狠狠综合久久| 成人激情校园春色| 欧美日韩三级视频| 精品久久人人做人人爰| 国产精品久久久久精k8 | 亚洲成人激情自拍| 麻豆一区二区在线| 91啪亚洲精品| 日韩欧美电影一二三| 久久久三级国产网站| 亚洲色图欧美偷拍| 日韩av在线播放中文字幕| 狠狠色丁香久久婷婷综合丁香| 91香蕉视频黄| 日韩免费高清电影| 综合久久一区二区三区| 日本特黄久久久高潮| heyzo一本久久综合| 日韩欧美三级在线| 国产精品成人免费在线| 日韩av成人高清| 色综合色狠狠综合色| 日韩精品一区二区在线观看| 亚洲三级电影全部在线观看高清| 日本不卡视频在线| 在线视频一区二区三| 国产午夜精品一区二区三区嫩草| 亚洲高清久久久| 99久久er热在这里只有精品66| 日韩欧美国产一区二区在线播放 | 久久影视一区二区| 婷婷开心激情综合| 91丨九色丨蝌蚪丨老版| 国产欧美一区二区精品性色| 青青草国产精品97视觉盛宴 | 91精品国产欧美日韩| 136国产福利精品导航| 国产精品77777竹菊影视小说| 欧美日韩精品一区二区在线播放| 国产精品毛片久久久久久| 久久不见久久见中文字幕免费| 欧美熟乱第一页| 亚洲欧美激情一区二区| 成人免费看片app下载| 精品成人一区二区| 久久99国产精品免费| 欧美一个色资源| 日韩精品亚洲专区| 91精品国产综合久久香蕉的特点| 亚洲成人你懂的| 在线观看av一区二区| 亚洲激情自拍偷拍| 91丝袜高跟美女视频| 亚洲码国产岛国毛片在线| jlzzjlzz国产精品久久| ...xxx性欧美| 91浏览器打开| 亚洲另类春色校园小说| 在线观看区一区二| 亚洲国产成人porn| 日韩欧美www| 极品少妇xxxx偷拍精品少妇| 精品国产亚洲在线| 成人免费看的视频| 亚洲乱码国产乱码精品精98午夜| 色屁屁一区二区| 午夜精品久久久久久久99樱桃| 欧美人与z0zoxxxx视频| 青青草成人在线观看| 欧美不卡在线视频| 成人午夜电影久久影院| 亚洲日本在线视频观看| 在线观看免费成人| 免费人成黄页网站在线一区二区| 91麻豆精品国产91久久久资源速度 | 久久99国内精品| 欧美国产一区在线| 99精品欧美一区| 日韩国产精品久久久久久亚洲| 精品久久久久久久人人人人传媒 | 在线观看不卡视频| 麻豆国产精品官网| 国产精品美女久久久久久久久久久| 91视频在线观看| 奇米色一区二区| 国产精品嫩草影院com| 欧美日韩精品欧美日韩精品 | 成人一区二区三区| 亚洲精品高清视频在线观看| 日韩一区二区高清| 一本色道久久综合亚洲aⅴ蜜桃| 丝袜美腿亚洲色图| 欧美韩国日本一区| 欧美一级久久久久久久大片| 99在线热播精品免费| 日本欧美在线观看| 国产精品久久影院| 日韩欧美激情一区| 色综合久久六月婷婷中文字幕| 久久国产精品99精品国产| 综合网在线视频| ww久久中文字幕| 欧美日本高清视频在线观看| 成人av电影在线观看| 蜜桃久久av一区| 亚洲大尺度视频在线观看| 亚洲欧洲韩国日本视频| 精品裸体舞一区二区三区| 欧亚一区二区三区| 成人h精品动漫一区二区三区| 日韩专区中文字幕一区二区| 亚洲黄一区二区三区| 国产精品久久三区| 国产欧美一区二区三区在线看蜜臀 | 精品入口麻豆88视频| 欧美日韩一区二区欧美激情| 波多野结衣在线一区| 国产精品99久久久久久似苏梦涵| 视频一区二区国产| 亚洲图片有声小说| 亚洲免费在线观看视频| 国产精品国产三级国产aⅴ入口| 久久欧美中文字幕| 欧美精品一区二区三区一线天视频 | 亚洲人午夜精品天堂一二香蕉| 久久这里只有精品首页| 欧美成人艳星乳罩| 91精品国产综合久久婷婷香蕉| 欧美日韩视频一区二区| 欧美色手机在线观看| 欧美色视频在线观看| 欧美偷拍一区二区| 91久久精品一区二区二区| 色94色欧美sute亚洲线路二| 色婷婷激情综合| 欧美亚洲国产一区在线观看网站 | 日本特黄久久久高潮| 日韩精品一二三区| 蜜芽一区二区三区| 精品一区二区三区av| 狠狠狠色丁香婷婷综合久久五月| 久久91精品久久久久久秒播| 极品少妇xxxx精品少妇| 国产高清不卡二三区| eeuss国产一区二区三区| 99久久久国产精品| 在线日韩av片| 制服.丝袜.亚洲.另类.中文| 日韩免费性生活视频播放| 久久久久国产精品麻豆| 国产精品久99| 亚洲一卡二卡三卡四卡| 人人超碰91尤物精品国产| 国产精品小仙女| 色哟哟一区二区三区| 欧美日韩久久不卡| 久久久精品欧美丰满| 亚洲精品国产无套在线观| 五月婷婷另类国产| 国产一区二区三区免费看 | 一区二区三区四区亚洲| 亚洲制服丝袜av| 国产一区二区三区免费| 91丝袜美腿高跟国产极品老师 | 国产精品久久久久久久久动漫 | 成人视屏免费看| 欧美日韩精品久久久| 亚洲精品一区二区精华| 亚洲精品自拍动漫在线| 日本成人在线一区| 丁香六月综合激情| 欧美特级限制片免费在线观看| 久久伊人蜜桃av一区二区| 亚洲综合一区在线| 国模套图日韩精品一区二区| 91女人视频在线观看| 精品少妇一区二区三区在线视频|