示例#1
0
xchar *xi_pathname_basename(const xchar *path) {
	xssize pos;

	if (path == NULL) {
		return NULL;
	}

	pos = xi_strlen(path) - 1;
	if (pos < 0) {
		return (xchar*) path;
	}

	while (path[pos] == '/' || path[pos] == '\\') {
		((xchar *) path)[pos] = '\0';
		pos--;
	}
	while (pos >= 0 && path[pos] != '/' && path[pos] != '\\') {
		pos--;
	}

	if (pos > 0) {
		return (xchar *) &path[pos + 1];
	} else {
		return (xchar *) path;
	}
}
示例#2
0
文件: utf8.c 项目: webos21/xi
char *copyUtf8(char *string) {
    char *buff = xi_strcpy(sysMalloc(xi_strlen(string) + 1), string);
    char *found = findHashedUtf8(buff, TRUE);

    if(found != buff)
        sysFree(buff);

    return found;
}
示例#3
0
文件: utf8.c 项目: webos21/xi
char *slash2dots(char *utf8) {
    int len = xi_strlen(utf8);
    char *conv = sysMalloc(len+1);
    int i;

    for(i = 0; i <= len; i++)
        if(utf8[i] == '/')
            conv[i] = '.';
        else
            conv[i] = utf8[i];

    return conv;
}
示例#4
0
xi_file_re xi_dir_make_force(const xchar *pathname, xint32 perm) {
	xchar opath[XCFG_PATHNAME_MAX];
	xchar* p;
	xssize len;
	xi_file_re ret;

	UNUSED(perm);

	if (pathname == NULL) {
		return XI_FILE_RV_ERR_ARGS;
	}

	len = xi_strlen(pathname);
	xi_strncpy(opath, pathname, len);
	opath[len] = '\0';

	if (opath[len - 1] == '/') {
		opath[len - 1] = '\0';
	}

	for (p = opath; *p; p++) {
		if (*p == '/') {
			*p = '\0';
			ret = xi_dir_make(opath, perm);
			if (ret != XI_FILE_RV_OK && ret != XI_FILE_RV_ERR_AE) {
				return ret;
			}
			*p = '/';
		}
	}

	ret = xi_dir_make(opath, perm);
	if (ret != XI_FILE_RV_OK && ret != XI_FILE_RV_ERR_AE) {
		return ret;
	}

	return XI_FILE_RV_OK;
}
示例#5
0
xi_file_re xi_pathname_merge(xchar *pathbuf, xuint32 pblen,
		xi_pathname_t pathinfo) {
	xchar buf[XCFG_PATHNAME_MAX];

	if (pathbuf == NULL) {
		return XI_FILE_RV_ERR_ARGS;
	}

	if (pathinfo.drive[0] != '\0') {
		xi_sprintf(buf, "%s:%s/%s", pathinfo.drive, pathinfo.dirname,
				pathinfo.basename);
	} else {
		xi_sprintf(buf, "%s/%s", pathinfo.dirname, pathinfo.basename);
	}

	if (xi_strlen(buf) > pblen) {
		return XI_FILE_RV_ERR_OVER;
	}

	xi_strcpy(pathbuf, buf);

	return XI_FILE_RV_OK;
}
示例#6
0
static xvoid * tc_client_thread(xvoid *args) {
	xint32 t = 1;
	xchar *tcname = "xi_socket.h-clt";

	xssize ret;
	xchar buf[1024];

	xint32 clt_sock = -1;

	xi_sock_addr_t toaddr = { XI_SOCK_FAMILY_INET, XI_SOCK_TYPE_STREAM,
			XI_SOCK_PROTO_IP, { '\0' }, 9876 };

	UNUSED(args);

	log_print(XDLOG, "Client Thread - started >>>>>>>>>>>>>>>\n\n");

	log_print(XDLOG, "  (%s:%02d) xi_socket_open ############\n", tcname, t++);
	clt_sock = xi_socket_open(toaddr.family, toaddr.type, toaddr.proto);
	if (clt_sock < 0) {
		log_print(XDLOG, "    - result : failed!!!\n\n");
		TC_EXIT_ERROR;
	}
	log_print(XDLOG, "    - result : pass. (socket=%d)\n\n", clt_sock);

	log_print(XDLOG, "  (%s:%02d) xi_socket_connect #########\n", tcname, t++);
	xi_strcpy(toaddr.host, "127.0.0.1");
	ret = xi_socket_connect(clt_sock, toaddr);
	if (ret < 0) {
		log_print(XDLOG, "    - result : failed!!! (ret=%d)\n\n", ret);
		TC_EXIT_ERROR;
	}
	log_print(XDLOG, "    - result : pass. (svr=%s)\n\n", toaddr.host);

	log_print(XDLOG, "  (%s:%02d) xi_socket_send #############\n", tcname, t++);
	xi_strcpy(buf, "Hello, SVR!!");
	ret = xi_socket_send(clt_sock, buf, xi_strlen(buf));
	if (ret < 0) {
		log_print(XDLOG, "    - result : failed!!! (ret=%d)\n\n", ret);
		TC_EXIT_ERROR;
	}
	log_print(XDLOG, "    - result : pass. (wbytes=%d/msg=%s)\n\n", ret, buf);

	log_print(XDLOG, "  (%s:%02d) xi_socket_recv #############\n", tcname, t++);
	xi_mem_set(buf, 0, sizeof(buf));
	ret = xi_socket_recv(clt_sock, buf, sizeof(buf));
	if (ret < 0) {
		log_print(XDLOG, "    - result : failed!!! (ret=%d)\n\n", ret);
		TC_EXIT_ERROR;
	}
	log_print(XDLOG, "    - result : pass. (rbytes=%d/msg=%s)\n\n", ret, buf);

	log_print(XDLOG, "  (%s:%02d) xi_file_write #############\n", tcname, t++);
	xi_strcpy(buf, "client file write!");
	ret = xi_file_write(clt_sock, buf, xi_strlen(buf));
	if (ret < 0) {
		log_print(XDLOG, "    - result : failed!!! (ret=%d)\n\n", ret);
		TC_EXIT_ERROR;
	}
	log_print(XDLOG, "    - result : pass. (wbytes=%d/msg=%s)\n\n", ret, buf);

	log_print(XDLOG, "  (%s:%02d) xi_file_read #############\n", tcname, t++);
	xi_mem_set(buf, 0, sizeof(buf));
	ret = xi_file_read(clt_sock, buf, sizeof(buf));
	if (ret < 0) {
		log_print(XDLOG, "    - result : failed!!! (ret=%d)\n\n", ret);
		TC_EXIT_ERROR;
	}
	log_print(XDLOG, "    - result : pass. (rbytes=%d/msg=%s)\n\n", ret, buf);

	log_print(XDLOG, "  (%s:%02d) xi_socket_shutdown ########\n", tcname, t++);
	ret = xi_socket_shutdown(clt_sock, XI_SOCK_SHUTDOWN_RDWR);
	if (ret < 0) {
		log_print(XDLOG, "    - result : failed!!! (ret=%d)\n\n", ret);
		TC_EXIT_ERROR;
	}
	log_print(XDLOG, "    - result : pass.\n\n");

	log_print(XDLOG, "  (%s:%02d) xi_socket_close ###########\n", tcname, t++);
	ret = xi_socket_close(clt_sock);
	if (ret < 0) {
		log_print(XDLOG, "    - result : failed!!! (ret=%d)\n\n", ret);
		TC_EXIT_ERROR;
	}
	log_print(XDLOG, "    - result : pass.\n\n");

	log_print(XDLOG, "Client Thread - ended <<<<<<<<<<<<<<<<<\n\n");

	return NULL;
}
示例#7
0
static xvoid * tc_server_thread(xvoid *args) {
	xint32 t = 1;
	xchar *tcname = "xi_socket.h-svr";

	xssize ret;
	xchar buf[1024];

	xint32 svr_sock = -1;
	xint32 client = -1;

	xi_sock_addr_t lsnaddr = { XI_SOCK_FAMILY_INET, XI_SOCK_TYPE_STREAM,
			XI_SOCK_PROTO_IP, { '\0' }, 9876 };
	xi_sock_addr_t laddr;
	xi_sock_addr_t fromaddr;

	UNUSED(args);

	log_print(XDLOG, "Server Thread - started >>>>>>>>>>>>>>>\n\n");

	log_print(XDLOG, "  (%s:%02d) xi_socket_open ############\n", tcname, t++);
	svr_sock = xi_socket_open(lsnaddr.family, lsnaddr.type, lsnaddr.proto);
	if (svr_sock < 0) {
		log_print(XDLOG, "    - result : failed!!!\n\n");
		TC_EXIT_ERROR;
	}
	log_print(XDLOG, "    - result : pass. (socket=%d)\n\n", svr_sock);

	log_print(XDLOG, "  (%s:%02d) xi_socket_opt_set #########\n", tcname, t++);
	ret = xi_socket_opt_set(svr_sock, XI_SOCK_OPT_REUSEADDR, TRUE);
	if (ret < 0) {
		log_print(XDLOG, "    - result : failed!!! (ret=%d)\n\n", ret);
		TC_EXIT_ERROR;
	}
	log_print(XDLOG, "    - result : pass.\n\n");

	log_print(XDLOG, "  (%s:%02d) xi_socket_bind ############\n", tcname, t++);
	xi_strcpy(lsnaddr.host, "0.0.0.0");
	ret = xi_socket_bind(svr_sock, lsnaddr);
	if (ret < 0) {
		log_print(XDLOG, "    - result : failed!!! (ret=%d)\n\n", ret);
		TC_EXIT_ERROR;
	}
	log_print(XDLOG, "    - result : pass.\n\n");

	log_print(XDLOG, "  (%s:%02d) xi_socket_listen ##########\n", tcname, t++);
	ret = xi_socket_listen(svr_sock, 10);
	if (ret < 0) {
		log_print(XDLOG, "    - result : failed!!! (ret=%d)\n\n", ret);
		TC_EXIT_ERROR;
	}
	log_print(XDLOG, "    - result : pass.\n\n");

	log_print(XDLOG, "  (%s:%02d) xi_socket_get_local #######\n", tcname, t++);
	ret = xi_socket_get_local(svr_sock, &laddr);
	if (ret < 0) {
		log_print(XDLOG, "    - result : failed!!! (ret=%d)\n\n", ret);
		TC_EXIT_ERROR;
	}
	log_print(XDLOG, "    - result : pass. (addr=%s,port=%d)\n\n", laddr.host, laddr.port);

	log_print(XDLOG, "  (%s:%02d) xi_socket_accept ##########\n", tcname, t++);
	client = xi_socket_accept(svr_sock, &fromaddr);
	if (client < 0) {
		log_print(XDLOG, "    - result : accept failed!!!\n\n");
		TC_EXIT_ERROR;
	}
	log_print(XDLOG, "    - result : pass. (client=%d, from=%s)\n\n", client, fromaddr.host);

	log_print(XDLOG, "  (%s:%02d) xi_socket_recv ############\n", tcname, t++);
	xi_mem_set(buf, 0, sizeof(buf));
	ret = xi_socket_recv(client, buf, sizeof(buf));
	if (ret < 0) {
		log_print(XDLOG, "    - result : recv failed!!!\n\n");
		TC_EXIT_ERROR;
	}
	log_print(XDLOG, "    - result : pass. (rbytes=%d/msg=%s)\n\n", ret, buf);

	log_print(XDLOG, "  (%s:%02d) xi_socket_send ############\n", tcname, t++);
	xi_strcpy(buf, "connected!");
	ret = xi_socket_send(client, buf, xi_strlen(buf));
	if (ret < 0) {
		log_print(XDLOG, "    - result : send failed!!!\n\n");
		TC_EXIT_ERROR;
	}
	log_print(XDLOG, "    - result : pass. (wbytes=%d/msg=%s)\n\n", ret, buf);

	log_print(XDLOG, "  (%s:%02d) xi_file_read #############\n", tcname, t++);
	xi_mem_set(buf, 0, sizeof(buf));
	ret = xi_file_read(client, buf, sizeof(buf));
	if (ret < 0) {
		log_print(XDLOG, "    - result : failed!!! (ret=%d)\n\n", ret);
		TC_EXIT_ERROR;
	}
	log_print(XDLOG, "    - result : pass. (rbytes=%d/msg=%s)\n\n", ret, buf);

	log_print(XDLOG, "  (%s:%02d) xi_file_write #############\n", tcname, t++);
	xi_strcpy(buf, "server file write!");
	ret = xi_file_write(client, buf, xi_strlen(buf));
	if (ret < 0) {
		log_print(XDLOG, "    - result : failed!!! (ret=%d)\n\n", ret);
		TC_EXIT_ERROR;
	}
	log_print(XDLOG, "    - result : pass. (wbytes=%d/msg=%s)\n\n", ret, buf);

	log_print(XDLOG, "  (%s:%02d) wait for client-end #######\n", tcname, t++);
	xi_thread_sleep(2000);

	log_print(XDLOG, "  (%s:%02d) xi_socket_close ###########\n", tcname, t++);
	ret = xi_socket_close(client);
	if (ret != XI_SOCK_RV_OK) {
		log_print(XDLOG, "    - result : client close err=%d!!!\n\n", ret);
		TC_EXIT_ERROR;
	}
	ret = xi_socket_close(svr_sock);
	if (ret != XI_SOCK_RV_OK) {
		log_print(XDLOG, "    - result : svr_sock close err=%d!!!\n\n", ret);
		TC_EXIT_ERROR;
	}
	log_print(XDLOG, "    - result : pass.\n\n", ret);

	log_print(XDLOG, "  (%s:%02d) signal to main thread #####\n", tcname, t++);
	_g_trun = FALSE;

	log_print(XDLOG, "Server Thread - ended <<<<<<<<<<<<<<<<<\n\n");

	return NULL;
}