Annotation of 43BSDTahoe/new/dsh/src/dbid.c, revision 1.1

1.1     ! root        1: /*
        !             2:  *     Create a bid for the command on the command line 
        !             3:  */
        !             4: #include <stdio.h>
        !             5: #include <sys/types.h>
        !             6: #include <sys/socket.h>
        !             7: #include <netinet/in.h>
        !             8: #include <sys/stat.h>
        !             9: #include <errno.h>
        !            10: #include <pwd.h>
        !            11: #include "dsh.h"
        !            12: #include "dbid.h"
        !            13: 
        !            14: #define TOKENSIZE 120
        !            15: 
        !            16: /*
        !            17:  *     Get the next token
        !            18:  */
        !            19: char *
        !            20: nexttoken (p, token)
        !            21: char   *p;
        !            22: char   *token;
        !            23: {
        !            24:     while (*p == ' ' || *p == '\t')
        !            25:        p++;
        !            26:     while (*p != ' ' && *p != '\t' && *p != 0)
        !            27:        *token++ = *p++;
        !            28:     *token = 0;
        !            29:     return (p);
        !            30: }
        !            31: 
        !            32: main (argc, argv)
        !            33: int    argc;
        !            34: char   *argv[];
        !            35: {
        !            36:     char       token[TOKENSIZE];
        !            37:     char       *p;
        !            38:     bool       allfound;
        !            39:     double     la[3];
        !            40:     int                fd, rv;
        !            41:     int                pid, port;
        !            42:     struct bidmsg      b;
        !            43:     struct passwd      *pwd;
        !            44:     struct passwd      *getpwuid();
        !            45: 
        !            46:     if (argc != 5) {
        !            47:        fprintf (stderr, "dbid usage: dbid <command> <host> <port#> <host>\n");
        !            48:        for (rv = 0; rv <argc; rv++) {
        !            49:            fprintf (stderr, "%s || ", argv[rv]);
        !            50:        }
        !            51:        fprintf (stderr, "\n");
        !            52:        exit (-1);
        !            53:     }
        !            54: 
        !            55:     /* find the elements of a pipe */
        !            56:     getpath ();
        !            57:     p = argv[1];
        !            58:     strcpy (token, "|");
        !            59:     allfound = TRUE;
        !            60:     while (*p != 0) {
        !            61:        if (*p != 0 && strcmp ("|", token) == 0) {
        !            62:            p = nexttoken (p, token);
        !            63:            if (*token != 0) {
        !            64:                if (findcmd (token) != 0) {
        !            65:                    allfound = FALSE;
        !            66:                    break;
        !            67:                }
        !            68:            }
        !            69:        }
        !            70:        p = nexttoken (p, token);
        !            71:     }
        !            72: 
        !            73:     /* get the load average */
        !            74:     getloadave (la);
        !            75: 
        !            76:     /* simple bidding */
        !            77:     if (allfound) {
        !            78:        b.bm_bid = 10.0 / la[0];
        !            79:     } else {
        !            80:        b.bm_bid = NOBID;
        !            81:     }
        !            82:     strcpy (b.bm_host, argv[4]);
        !            83: 
        !            84:     /* get the directory to use */
        !            85:     pwd = getpwuid (getuid());
        !            86:     pid = getpid();
        !            87:     rv = getstringrc (".dshrc", "dir", token);
        !            88:     if (rv < 0) {
        !            89:        sprintf (b.bm_dir, "%s/dsh%d", pwd->pw_dir, pid);
        !            90:     } else {
        !            91:        if (token[0] == '/' || token[0] == '~') {
        !            92:            /* this is an absolute path */
        !            93:            sprintf (b.bm_dir, "%s/dsh%d", token, pid);
        !            94:        } else {
        !            95:            /* a relative path */
        !            96:            sprintf (b.bm_dir, "%s/%s/dsh%d", pwd->pw_dir, token, pid);
        !            97:        }
        !            98:     }
        !            99: 
        !           100:     /* return bid */
        !           101:     port = 0;                          /* no particular port */
        !           102:     fd = makedgsocket (&port);
        !           103:     if (fd < 0) {
        !           104:        error ("dbid: couldn't open socket to send over");
        !           105:     }
        !           106:     /*
        !           107:     fprintf (stderr, "senddg (%d, %x, %d, %s, %d)\n",
        !           108:         fd, &b, sizeof (struct bidmsg), argv[2], atoi(argv[3]));
        !           109:     */
        !           110:     rv = senddg (fd, &b, sizeof (struct bidmsg), argv[2], atoi(argv[3]));
        !           111:     if (rv < 0) {
        !           112:        error ("dbid: couldn't send bid");
        !           113:     }
        !           114: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.