Esempio n. 1
0
pid_t
smtpmail(char **to, char *subject, char *file)
{
	int	fd, fd0, wfd, i, j = -1;
	pid_t	pid;
	char	buf[MAXLINE];
	char	sendmail[MAXPATH], *mail;
	char	**av;
	struct	utsname ubuf;
	char	*paths[] = {
		"/usr/bin",
		"/bin",
		"/usr/sbin",
		"/usr/etc",
		"/etc",
		"/usr/lib",
		"/usr/local/bin",
		0
	};

	while (paths[++j]) {
		sprintf(sendmail, "%s/sendmail", paths[j]);
		if (access(sendmail, X_OK) == 0) {
			FILE	*f, *pipe;

			av = addLine(0, strdup(sendmail));
			av = addLine(av, strdup("-i"));
			EACH (to) av = addLine(av, strdup(to[i]));
			av = addLine(av, 0);

			pid = spawnvpio(&wfd, 0, 0, av + 1);
			freeLines(av, free);
			if (pid == -1) return (pid);
			pipe = fdopen(wfd, "w");
			fputs("To: ", pipe);
			EACH (to) {
				unless (i == 1) fprintf(pipe, ", ");
				fprintf(pipe, "%s", to[i]);
			}
			fputs("\n", pipe);
			if (subject && *subject) {
				fprintf(pipe, "Subject: %s\n", subject);
			}
			fputs("\n", pipe);
			f = fopen(file, "r");
			while (fgets(buf, sizeof(buf), f)) fputs(buf, pipe);
			fclose(f);
			fclose(pipe);
			return pid;
		}
	}
Esempio n. 2
0
pair<Weight, Edges> minimumSpanningForest(const Graph &g) {
    int n = g.size();
    UnionFind uf(n);
    priority_queue<Edge> Q;
    REP(u, n) EACH(e, g[u]) if (u < e->dst) Q.push(*e);

    Weight total = 0;
    Edges F;
    while (F.size() < n-1 && !Q.empty()) {
        Edge e = Q.top(); Q.pop();
        if (uf.unionSet(e.src, e.dst)) {
            F.push_back(e);
            total += e.weight;
        }
    }
    return pair<Weight, Edges>(total, F);
}
Esempio n. 3
0
int main(void)
{   
    int a[5] = {0, 1, 2, 3, 4};    
    int i = 0;
 
    printf("sizeof(a) = %d sizeof(*a) = %d\n", sizeof(a), sizeof(*a));
    printf("sizeof(a) / sizeof(*a) = %d\n", sizeof(a) / sizeof(*a));
    
    DIV_LINE;
    printf("DIM(a) = %d\n", DIM(a));

    DIV_LINE;
    int* p = a;

    EACH(5)
        printf("a[%d] = %d  [p+%d] = %0X  [*p+%d] = %d\n",
                  i, a[i], i, p+i, i, *p+i);

    return 0;
}