本文整理汇总了C++中r_cons_newline函数的典型用法代码示例。如果您正苦于以下问题:C++ r_cons_newline函数的具体用法?C++ r_cons_newline怎么用?C++ r_cons_newline使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了r_cons_newline函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: r_core_yank_cat
R_API int r_core_yank_cat (RCore *core, ut64 pos) {
int ybl = core->yank_buf->length;
if (ybl>0) {
if (pos < ybl) {
r_cons_memcat ((const char*)core->yank_buf->buf+pos,
core->yank_buf->length-pos);
r_cons_newline ();
return true;
} else eprintf ("Position exceeds buffer length.\n");
} else r_cons_newline ();
return false;
}
开发者ID:Dev-Tech-Studio,项目名称:radare2,代码行数:12,代码来源:yank.c
示例2: cmd_fz
static void cmd_fz(RCore *core, const char *input) {
switch (*input) {
case '?':
r_core_cmd_help (core, help_msg_fz);
break;
case '.':
{
const char *a = NULL, *b = NULL;
r_flag_zone_around (core->flags, core->offset, &a, &b);
r_cons_printf ("%s %s\n", a?a:"~", b?b:"~");
}
break;
case ':':
{
const char *a, *b;
int a_len = 0;
int w = r_cons_get_size (NULL);
r_flag_zone_around (core->flags, core->offset, &a, &b);
if (a) {
r_cons_printf ("[<< %s]", a);
a_len = strlen (a) + 4;
}
int padsize = (w / 2) - a_len;
int title_size = 12;
if (a || b) {
char *title = r_str_newf ("[ 0x%08"PFMT64x" ]", core->offset);
title_size = strlen (title);
padsize -= strlen (title) / 2;
const char *halfpad = r_str_pad (' ', padsize);
r_cons_printf ("%s%s", halfpad, title);
free (title);
}
if (b) {
padsize = (w / 2) - title_size - strlen (b) - 4;
const char *halfpad = padsize > 1? r_str_pad (' ', padsize): "";
r_cons_printf ("%s[%s >>]", halfpad, b);
}
if (a || b) {
r_cons_newline();
}
}
break;
case ' ':
r_flag_zone_add (core->flags, r_str_trim_ro (input + 1), core->offset);
break;
case '-':
if (input[1] == '*') {
r_flag_zone_reset (core->flags);
} else {
r_flag_zone_del (core->flags, input + 1);
}
break;
case '*':
r_flag_zone_list (core->flags, '*');
break;
case 0:
r_flag_zone_list (core->flags, 0);
break;
}
}
开发者ID:rlaemmert,项目名称:radare2,代码行数:60,代码来源:cmd_flag.c
示例3: r_cons_pal_show_256
static void r_cons_pal_show_256 () {
int r, g, b;
r_cons_print ("\n\nXTerm colors:\n");
for (r = 0x00; r <= 0xff; r += 0x28) {
if (r == 0x28) {
r = 0x5f;
}
for (b = 0x00; b <= 0xff; b += 0x28) {
if (b == 0x28) {
b = 0x5f;
}
for (g = 0x00; g <= 0xff; g += 0x28) {
char fg[32], bg[32];
if (g == 0x28) {
g = 0x5f;
}
if ((r <= 0x5f) && (g <= 0x5f)) {
strcpy (fg, Color_WHITE);
} else {
strcpy (fg, Color_BLACK);
}
r_cons_rgb_str (bg, r, g, b, 1);
r_cons_printf ("%s%s rgb:%02x%02x%02x "
Color_RESET, fg, bg, r, g, b);
if (g == 0xff) {
r_cons_newline ();
}
}
}
}
}
开发者ID:AmesianX,项目名称:radare2,代码行数:31,代码来源:pal.c
示例4: r_cons_pal_show_rgb
static void r_cons_pal_show_rgb () {
const int inc = 3;
int i, j, k, n = 0;
r_cons_print ("\n\nRGB:\n");
for (i = n = 0; i <= 0xf; i += inc) {
for (k = 0; k <= 0xf; k += inc) {
for (j = 0; j <= 0xf; j += inc) {
char fg[32], bg[32];
int r = i * 16;
int g = j * 16;
int b = k * 16;
strcpy (fg, ((i < 6) && (j < 5))
? Color_WHITE: Color_BLACK);
r_cons_rgb_str (bg, r, g, b, 1);
r_cons_printf ("%s%s rgb:%02x%02x%02x "
Color_RESET, fg, bg, r, g, b);
//if (n++==7) {
if (n ++== 5) {
n = 0;
r_cons_newline ();
}
}
}
}
}
开发者ID:AmesianX,项目名称:radare2,代码行数:25,代码来源:pal.c
示例5: r_cons_pal_show_256
static void r_cons_pal_show_256() {
RColor rc = RColor_BLACK;
r_cons_print ("\n\nXTerm colors:\n");
int r = 0;
int g = 0;
int b = 0;
for (r = 0x00; r <= 0xff; r += 0x28) {
rc.r = r;
if (rc.r == 0x28) {
rc.r = 0x5f;
}
for (b = 0x00; b <= 0xff; b += 0x28) {
rc.b = b;
if (rc.b == 0x28) {
rc.b = 0x5f;
}
for (g = 0x00; g <= 0xff; g += 0x28) {
rc.g = g;
char bg[32];
if (rc.g == 0x28) {
rc.g = 0x5f;
}
const char *fg = ((rc.r <= 0x5f) && (rc.g <= 0x5f)) ? Color_WHITE: Color_BLACK;
r_cons_rgb_str (bg, sizeof (bg), &rc);
r_cons_printf ("%s%s rgb:%02x%02x%02x "
Color_RESET, fg, bg, rc.r, rc.g, rc.b);
}
r_cons_newline ();
}
}
}
开发者ID:montekki,项目名称:radare2,代码行数:31,代码来源:pal.c
示例6: r_cons_pal_show_rgb
static void r_cons_pal_show_rgb() {
const int inc = 3;
int i, j, k, n = 0;
RColor rc = RColor_BLACK;
r_cons_print ("\n\nRGB:\n");
for (i = n = 0; i <= 0xf; i += inc) {
for (k = 0; k <= 0xf; k += inc) {
for (j = 0; j <= 0xf; j += inc) {
char fg[32], bg[32];
rc.r = i * 16;
rc.g = j * 16;
rc.b = k * 16;
strcpy (fg, ((i < 6) && (j < 5))
? Color_WHITE: Color_BLACK);
r_cons_rgb_str (bg, sizeof (bg), &rc);
r_cons_printf ("%s%s rgb:%02x%02x%02x "
Color_RESET, fg, bg, rc.r, rc.g, rc.b);
if (n ++== 5) {
n = 0;
r_cons_newline ();
}
}
}
}
}
开发者ID:montekki,项目名称:radare2,代码行数:25,代码来源:pal.c
示例7: main
int main() {
int i,j ,k;
//char *str = "\x1b[38;5;231mpop\x1b[0m";
//char *str ="\x1b]4;%d;rgb:30/20/24pop\x1b[0m";
char *str ="\x1b\\pop\x1b[0m";
i=j=k =0;
r_cons_new ();
// r_cons_rgb_init ();
printf ("3 == %d\n", r_str_ansi_len (str));
for (i=0;i<255;i+=40) {
for (j=0;j<255;j+=40) { for (k=0;k<255;k+=40) {
r_cons_rgb (i, j, k, 0);
r_cons_rgb (i, j, k, 1);
r_cons_print ("__");
r_cons_reset_colors ();
r_cons_rgb (i, j, k, 0);
// r_cons_rgb (155, 200, 200, 1);
r_cons_printf (" RGB %d %d %d", i, j, k);
r_cons_reset_colors ();
r_cons_newline ();
}
}}
r_cons_flush ();
return 0;
}
开发者ID:AmesianX,项目名称:radare2,代码行数:28,代码来源:test-rgb.c
示例8: r_cons_pal_show
R_API void r_cons_pal_show () {
const int inc = 3;
int i, j, k, n = 0;
for (i=0; colors[i].name; i++) {
r_cons_printf ("%s%s__"Color_RESET" %s\n",
colors[i].code,
colors[i].bgcode,
colors[i].name);
}
r_cons_printf ("\nGreyscale:\n");
for (i=n=0; i<=0xf; i+=1) {
char fg[32], bg[32];
int r = i*16;
if (i<5) strcpy (fg, Color_WHITE);
else r_cons_rgb_str (fg, 0, 0, 0, 0);
r_cons_rgb_str (bg, r, r, r, 1);
r_cons_printf ("%s%s rgb:%x%x%x "
Color_RESET, fg, bg, i, i, i);
if (n++==5) {
n = 0;
r_cons_newline();
}
}
r_cons_printf ("\n\nRGB:\n");
for (i=n=0; i<=0xf; i+=inc) {
for (k=0; k<=0xf; k+=inc) {
for (j=0; j<=0xf; j+=inc) {
char fg[32], bg[32];
int r = i*16;
int g = j*16;
int b = k*16;
if ((i<6) && (j<5) )
strcpy (fg, Color_WHITE);
//if (i<2 && j<6 && k<13)
else r_cons_rgb_str (fg, 0, 0, 0, 0);
r_cons_rgb_str (bg, r, g, b, 1);
r_cons_printf ("%s%s rgb:%x%x%x "Color_RESET,
fg, bg, i, j, k);
//if (n++==7) {
if (n++==5) {
n = 0;
r_cons_newline();
}
}
}
}
}
开发者ID:l3acon,项目名称:radare2,代码行数:47,代码来源:pal.c
示例9: handle_sha512
static void handle_sha512 (const ut8 *block, int len) {
int i = 0;
RHash *ctx = r_hash_new (R_TRUE, R_HASH_SHA512);
const ut8 *c = r_hash_do_sha512 (ctx, block, len);
for (i=0; i<R_HASH_SIZE_SHA512; i++) r_cons_printf ("%02x", c[i]);
r_cons_newline ();
r_hash_free (ctx);
}
开发者ID:8500616886,项目名称:radare2,代码行数:8,代码来源:cmd_hash.c
示例10: handle_md5
static void handle_md5 (const ut8 *block, int len) {
int i = 0;
RHash *ctx = r_hash_new (true, R_HASH_MD5);
const ut8 *c = r_hash_do_md5 (ctx, block, len);
for (i=0; i<R_HASH_SIZE_MD5; i++) r_cons_printf ("%02x", c[i]);
r_cons_newline ();
r_hash_free (ctx);
}
开发者ID:EliaGeretto,项目名称:radare2,代码行数:8,代码来源:cmd_hash.c
示例11: r_debug_signal_list
R_API void r_debug_signal_list(RDebug *dbg, int mode) {
dbg->_mode = mode;
switch (mode) {
case 0:
case 1:
sdb_foreach (DB, siglistcb, dbg);
break;
case 2:
r_cons_strcat ("[");
sdb_foreach (DB, siglistjsoncb, dbg);
r_cons_strcat ("]");
r_cons_newline();
break;
}
dbg->_mode = 0;
}
开发者ID:13572293130,项目名称:radare2,代码行数:16,代码来源:signal.c
示例12: algolist
static void algolist(int mode) {
const char *name;
ut64 bits;
int i;
for (i=0; ; i++) {
bits = 1<<i;
name = r_hash_name (bits);
if (!name||!*name) break;
if (mode) {
r_cons_printf ("%s\n", name);
} else {
r_cons_printf (" #%s", name);
if (!((i+1)%10)) r_cons_newline ();
}
}
if (!mode) r_cons_printf ("\n");
}
开发者ID:piaoapiao,项目名称:radare2,代码行数:17,代码来源:cmd_hash.c
示例13: typelist
static int typelist (void *p, const char *k, const char *v) {
r_cons_printf ("tk %s = %s\n", k, v);
#if 0
if (!strcmp (v, "func")) {
const char *rv = sdb_const_get (DB,
sdb_fmt (0, "func.%s.ret", k), 0);
r_cons_printf ("# %s %s(", rv, k);
for (i = 0; i < 16; i++) {
char *av = sdb_get (DB,
sdb_fmt (0, "func.%s.arg.%d", k, i), 0);
if (!av) break;
r_str_replace_char (av, ',', ' ');
r_cons_printf ("%s%s", i? ", ": "", av);
free (av);
}
r_cons_printf (");\n");
// signature in pf for asf
r_cons_printf ("asf %s=", k);
// formats
for (i = 0; i < 16; i++) {
const char *fmt;
char *comma, *av = sdb_get (DB,
sdb_fmt (0, "func.%s.arg.%d", k, i), 0);
if (!av) break;
comma = strchr (av, ',');
if (comma) *comma = 0;
fmt = sdb_const_get (DB, sdb_fmt (0, "type.%s", av), 0);
r_cons_printf ("%s", fmt);
if (comma) *comma = ',';
free (av);
}
// names
for (i = 0; i < 16; i++) {
char *comma, *av = sdb_get (DB,
sdb_fmt (0, "func.%s.arg.%d", k, i), 0);
if (!av) break;
comma = strchr (av, ',');
if (comma) *comma++ = 0;
r_cons_printf (" %s", comma);
free (av);
}
r_cons_newline ();
}
#endif
return 1;
}
开发者ID:HKingz,项目名称:radare2,代码行数:46,代码来源:cmd_type.c
示例14: r_cons_pal_show_gs
static void r_cons_pal_show_gs () {
int i, n;
r_cons_print ("\nGreyscale:\n");
for (i = 0x08, n = 0; i <= 0xee; i += 0xa) {
char fg[32], bg[32];
if (i < 0x76) strcpy (fg, Color_WHITE);
else strcpy (fg, Color_BLACK);
r_cons_rgb_str (bg, i, i, i, 1);
r_cons_printf ("%s%s rgb:%02x%02x%02x "Color_RESET,
fg, bg, i, i, i);
if (n++ == 5) {
n = 0;
r_cons_newline ();
}
}
}
开发者ID:AmesianX,项目名称:radare2,代码行数:17,代码来源:pal.c
示例15: r_core_yank_dump
R_API int r_core_yank_dump (RCore *core, ut64 pos) {
int res = R_FALSE, i = 0;
int ybl = core->yank_buf->length;
if (ybl>0) {
if (pos<ybl) {
r_cons_printf ("0x%08"PFMT64x " %d ",
core->yank_buf->base+pos,
core->yank_buf->length-pos);
for (i = pos; i < core->yank_buf->length; i++)
r_cons_printf ("%02x",
core->yank_buf->buf[i]);
r_cons_newline ();
res = R_TRUE;
} else eprintf ("Position exceeds buffer length.\n");
} else eprintf ("No buffer yanked already\n");
return res;
}
开发者ID:t35t12345,项目名称:radare2,代码行数:17,代码来源:yank.c
示例16: r_cons_strcat_justify
R_API void r_cons_strcat_justify (const char *str, int j, char c) {
int i, o, len;
for (o=i=len=0; str[i]; i++, len++) {
if (str[i]=='\n') {
r_cons_memset (' ', j);
if (c) {
r_cons_memset (c, 1);
r_cons_memset (' ', 1);
}
r_cons_memcat (str+o, len);
if (str[o+len] == '\n')
r_cons_newline ();
o = i+1;
len = 0;
}
}
if (len>1)
r_cons_memcat (str+o, len);
}
开发者ID:NightOfTwelve,项目名称:radare2,代码行数:19,代码来源:cons.c
示例17: siglistcb
static int siglistcb (void *p, const char *k, const char *v) {
static char key[32] = "cfg.";
RDebug *dbg = (RDebug *)p;
int mode = dbg->_mode;
int opt;
if (atoi (k)>0) {
strcpy (key+4, k);
opt = sdb_num_get (DB, key, 0);
if (opt) {
r_cons_printf ("%s %s", k, v);
if (opt & R_DBG_SIGNAL_CONT)
r_cons_strcat (" cont");
if (opt & R_DBG_SIGNAL_SKIP)
r_cons_strcat (" skip");
r_cons_newline ();
} else {
if (mode == 0)
r_cons_printf ("%s %s\n", k, v);
}
}
return 1;
}
开发者ID:0x2F,项目名称:radare2,代码行数:22,代码来源:signal.c
示例18: r_cons_pal_show_gs
static void r_cons_pal_show_gs() {
int i, n;
r_cons_print ("\nGreyscale:\n");
RColor rcolor = RColor_BLACK;
for (i = 0x08, n = 0; i <= 0xee; i += 0xa) {
char fg[32], bg[32];
rcolor.r = i;
rcolor.g = i;
rcolor.b = i;
if (i < 0x76) {
strcpy (fg, Color_WHITE);
} else {
strcpy (fg, Color_BLACK);
}
r_cons_rgb_str (bg, sizeof (bg), &rcolor);
r_cons_printf ("%s%s rgb:%02x%02x%02x "Color_RESET,
fg, bg, i, i, i);
if (n++ == 5) {
n = 0;
r_cons_newline ();
}
}
}
开发者ID:montekki,项目名称:radare2,代码行数:24,代码来源:pal.c
示例19: bin_info
//.........这里部分代码省略.........
snprintf (baddr_str, sizeof (baddr_str),
"%"PFMT64d, info->baddr);
if (IS_MODE_SET (mode)) {
r_config_set (r->config, "file.type", info->rclass);
r_config_set (r->config, "cfg.bigendian", info->big_endian ? "true" : "false");
if (info->rclass && !strcmp (info->rclass, "fs")) {
r_config_set (r->config, "asm.arch", info->arch);
r_core_cmdf (r, "m /root %s 0", info->arch);
} else {
if (info->lang) {
r_config_set (r->config, "bin.lang", info->lang);
}
r_config_set (r->config, "asm.os", info->os);
r_config_set (r->config, "asm.arch", info->arch);
r_config_set (r->config, "anal.arch", info->arch);
snprintf (str, R_FLAG_NAME_SIZE, "%i", info->bits);
r_config_set (r->config, "asm.bits", str);
r_config_set (r->config, "asm.dwarf",
(R_BIN_DBG_STRIPPED &info->dbg_info) ? "false" : "true");
}
} else if (IS_MODE_SIMPLE (mode)) {
r_cons_printf ("arch %s\n", info->arch);
r_cons_printf ("bits %d\n", info->bits);
r_cons_printf ("os %s\n", info->os);
r_cons_printf ("endian %s\n", info->big_endian? "big": "little");
} else if (IS_MODE_RAD (mode)) {
if (info->type && !strcmp (info->type, "fs")) {
r_cons_printf ("e file.type=fs\n");
r_cons_printf ("m /root %s 0\n", info->arch);
} else {
r_cons_printf ("e cfg.bigendian=%s\n"
"e asm.bits=%i\n"
"e asm.dwarf=%s\n",
r_str_bool (info->big_endian),
info->bits,
r_str_bool (R_BIN_DBG_STRIPPED &info->dbg_info));
if (info->lang && *info->lang) {
r_cons_printf ("e bin.lang=%s\n", info->lang);
}
if (info->rclass && *info->rclass) {
r_cons_printf ("e file.type=%s\n",
info->rclass);
}
if (info->os) {
r_cons_printf ("e asm.os=%s\n", info->os);
}
if (info->arch) {
r_cons_printf ("e asm.arch=%s\n", info->arch);
}
}
} else {
// XXX: if type is 'fs' show something different?
if (IS_MODE_JSON (mode)) r_cons_printf ("{");
pair_bool ("pic", info->has_pi, mode, false);
pair_bool ("canary", info->has_canary, mode, false);
pair_bool ("nx", info->has_nx, mode, false);
pair_bool ("crypto", info->has_crypto, mode, false);
pair_bool ("va", info->has_va, mode, false);
pair_str ("bintype", info->rclass, mode, false);
pair_str ("class", info->bclass, mode, false);
pair_str ("lang", info->lang, mode, false);
pair_str ("arch", info->arch, mode, false);
pair_int ("bits", info->bits, mode, false);
pair_str ("machine", info->machine, mode, false);
pair_str ("os", info->os, mode, false);
pair_str ("subsys", info->subsystem, mode, false);
pair_str ("endian", info->big_endian ? "big" : "little", mode, false);
pair_bool ("stripped", R_BIN_DBG_STRIPPED & info->dbg_info, mode, false);
pair_bool ("static", r_bin_is_static (r->bin), mode, false);
pair_bool ("linenum", R_BIN_DBG_LINENUMS & info->dbg_info, mode, false);
pair_bool ("lsyms", R_BIN_DBG_SYMS & info->dbg_info, mode, false);
pair_bool ("relocs", R_BIN_DBG_RELOCS & info->dbg_info, mode, false);
pair_str ("rpath", info->rpath, mode, false);
pair_str ("binsz", size_str, mode, false);
pair_str ("compiled", compiled, mode, false);
pair_str ("guid", info->guid, mode, false);
pair_str ("dbg_file", info->debug_file_name, mode, true);
for (i = 0; info->sum[i].type; i++) {
int len;
RBinHash *h = &info->sum[i];
ut64 hash = r_hash_name_to_bits (h->type);
RHash *rh = r_hash_new (true, hash);
len = r_hash_calculate (rh, hash, (const ut8*)
binfile->buf->buf+h->from, h->to);
if (len < 1) eprintf ("Invaild wtf\n");
r_hash_free (rh);
r_cons_printf ("%s\t%d-%dc\t", h->type, h->from, h->to+h->from);
for (j = 0; j < h->len; j++) {
r_cons_printf ("%02x", h->buf[j]);
}
r_cons_newline ();
}
if (IS_MODE_JSON (mode)) r_cons_printf ("}");
}
return true;
}
开发者ID:hidd3ncod3s,项目名称:radare2,代码行数:101,代码来源:bin.c
示例20: cmd_write_op
//.........这里部分代码省略.........
if (space) {
*space++ = 0;
key = space;
space = strchr (key, ' ');
if (space) {
*space++ = 0;
iv = space;
}
}
algo = args;
if (algo && *algo && key) {
encrypt_or_decrypt_block (core, algo, key, direction, iv);
} else {
eprintf ("Usage: wo%c [algo] [key] [IV]\n", ((!direction)?'E':'D'));
eprintf ("Currently supported hashes:\n");
ut64 bits;
int i;
for (i = 0; ; i++) {
bits = ((ut64)1) << i;
const char *name = r_hash_name (bits);
if (!name || !*name) break;
printf (" %s\n", name);
}
eprintf ("Available Encoders/Decoders: \n");
// TODO: do not hardcode
eprintf (" base64\n");
eprintf (" base91\n");
eprintf (" punycode\n");
eprintf ("Currently supported crypto algos:\n");
for (i = 0; ; i++) {
bits = ((ut64)1) << i;
const char *name = r_crypto_name (bits);
if (!name || !*name) break;
printf (" %s\n", name);
}
}
free (args);
}
break;
case 'p': // debrujin patterns
switch (input[2]) {
case 'D': // "wopD"
len = (int)(input[3]==' ')
? r_num_math (core->num, input + 3)
: core->blocksize;
if (len > 0) {
/* XXX This seems to fail at generating long patterns (wopD 512K) */
buf = (ut8*)r_debruijn_pattern (len, 0, NULL); //debruijn_charset);
if (buf) {
const ut8 *ptr = buf;
ut64 addr = core->offset;
if (input[3] == '*') {
int i;
r_cons_printf ("wx ");
for (i = 0; i < len; i++) {
r_cons_printf ("%02x", buf[i]);
}
r_cons_newline ();
} else {
while (true) {
int res = r_core_write_at (core, addr, ptr, len);
if (res < 1 || len == res) {
break;
}
if (res < len) {
ptr += res;
len -= res;
addr += res;
}
}
}
free (buf);
} else {
eprintf ("Couldn't generate pattern of length %d\n", len);
}
}
break;
case 'O': // "wopO"
if (strlen (input) > 4 && strncmp (input + 4, "0x", 2)) {
eprintf ("Need hex value with `0x' prefix e.g. 0x41414142\n");
} else if (input[3] == ' ') {
value = r_num_get (core->num, input + 4);
core->num->value = r_debruijn_offset (value, r_config_get_i (core->config, "cfg.bigendian"));
r_cons_printf ("%"PFMT64d"\n", core->num->value);
}
break;
case '\0':
case '?':
default:
r_core_cmd_help (core, help_msg_wop);
break;
}
break;
case '\0':
case '?':
default:
r_core_cmd_help (core, help_msg_wo);
break;
}
}
开发者ID:agatti,项目名称:radare2,代码行数:101,代码来源:cmd_write.c
注:本文中的r_cons_newline函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论