Example #1
0
static void add_service(obs_property_t list, json_t *service)
{
	json_t *servers;
	const char *name;

	if (!json_is_object(service)) {
		blog(LOG_WARNING, "rtmp-common.c: [add_service] service "
		                  "is not an object");
		return;
	}

	name = get_string_val(service, "name");
	if (!name) {
		blog(LOG_WARNING, "rtmp-common.c: [add_service] service "
		                  "has no name");
		return;
	}

	servers = json_object_get(service, "servers");
	if (!servers || !json_is_array(servers)) {
		blog(LOG_WARNING, "rtmp-common.c: [add_service] service "
		                  "'%s' has no servers", name);
		return;
	}

	obs_property_list_add_string(list, name, name);
}
Example #2
0
static void add_service(obs_property_t *list, json_t *service, bool show_all,
		const char *cur_service)
{
	json_t *servers;
	const char *name;
	bool common;

	if (!json_is_object(service)) {
		blog(LOG_WARNING, "rtmp-common.c: [add_service] service "
		                  "is not an object");
		return;
	}

	name = get_string_val(service, "name");
	if (!name) {
		blog(LOG_WARNING, "rtmp-common.c: [add_service] service "
		                  "has no name");
		return;
	}

	common = get_bool_val(service, "common");
	if (!show_all && !common && strcmp(cur_service, name) != 0) {
		return;
	}

	servers = json_object_get(service, "servers");
	if (!servers || !json_is_array(servers)) {
		blog(LOG_WARNING, "rtmp-common.c: [add_service] service "
		                  "'%s' has no servers", name);
		return;
	}

	obs_property_list_add_string(list, name, name);
}
Example #3
0
static HRESULT String_toUpperCase(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv,
                                  jsval_t *r)
{
    jsstr_t *str;
    HRESULT hres;

    TRACE("\n");

    hres = get_string_val(ctx, jsthis, &str);
    if(FAILED(hres))
        return hres;

    if(r) {
        jsstr_t *ret;
        WCHAR *buf;

        buf = jsstr_alloc_buf(jsstr_length(str), &ret);
        if(!buf) {
            jsstr_release(str);
            return E_OUTOFMEMORY;
        }

        jsstr_flush(str, buf);
        struprW(buf);
        *r = jsval_string(ret);
    }
    jsstr_release(str);
    return S_OK;
}
Example #4
0
static HRESULT do_attribute_tag_format(script_ctx_t *ctx, vdisp_t *jsthis, unsigned argc, jsval_t *argv, jsval_t *r,
                                       const WCHAR *tagname, const WCHAR *attrname)
{
    jsstr_t *str, *attr_value = NULL;
    HRESULT hres;

    hres = get_string_val(ctx, jsthis, &str);
    if(FAILED(hres))
        return hres;

    if(argc) {
        hres = to_string(ctx, argv[0], &attr_value);
        if(FAILED(hres)) {
            jsstr_release(str);
            return hres;
        }
    } else {
        attr_value = jsstr_undefined();
    }

    if(r) {
        unsigned attrname_len = strlenW(attrname);
        unsigned tagname_len = strlenW(tagname);
        jsstr_t *ret;
        WCHAR *ptr;

        ptr = jsstr_alloc_buf(2*tagname_len + attrname_len + jsstr_length(attr_value) + jsstr_length(str) + 9, &ret);
        if(ptr) {
            *ptr++ = '<';
            memcpy(ptr, tagname, tagname_len*sizeof(WCHAR));
            ptr += tagname_len;
            *ptr++ = ' ';
            memcpy(ptr, attrname, attrname_len*sizeof(WCHAR));
            ptr += attrname_len;
            *ptr++ = '=';
            *ptr++ = '"';
            ptr += jsstr_flush(attr_value, ptr);
            *ptr++ = '"';
            *ptr++ = '>';
            ptr += jsstr_flush(str, ptr);

            *ptr++ = '<';
            *ptr++ = '/';
            memcpy(ptr, tagname, tagname_len*sizeof(WCHAR));
            ptr += tagname_len;
            *ptr = '>';

            *r = jsval_string(ret);
        } else {
            hres = E_OUTOFMEMORY;
        }
    }

    jsstr_release(attr_value);
    jsstr_release(str);
    return hres;
}
Example #5
0
/* ECMA-262 3rd Edition    15.5.4.15 */
static HRESULT String_substring(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv,
                                jsval_t *r)
{
    INT start=0, end, length;
    jsstr_t *str;
    double d;
    HRESULT hres;

    TRACE("\n");

    hres = get_string_val(ctx, jsthis, &str);
    if(FAILED(hres))
        return hres;

    length = jsstr_length(str);
    if(argc >= 1) {
        hres = to_integer(ctx, argv[0], &d);
        if(FAILED(hres)) {
            jsstr_release(str);
            return hres;
        }

        if(d >= 0)
            start = is_int32(d) ? min(length, d) : length;
    }

    if(argc >= 2) {
        hres = to_integer(ctx, argv[1], &d);
        if(FAILED(hres)) {
            jsstr_release(str);
            return hres;
        }

        if(d >= 0)
            end = is_int32(d) ? min(length, d) : length;
        else
            end = 0;
    } else {
        end = length;
    }

    if(start > end) {
        INT tmp = start;
        start = end;
        end = tmp;
    }

    if(r) {
        jsstr_t *ret = jsstr_substr(str, start, end-start);
        if(ret)
            *r = jsval_string(ret);
        else
            hres = E_OUTOFMEMORY;
    }
    jsstr_release(str);
    return hres;
}
Example #6
0
/* ECMA-262 3rd Edition    B.2.3 */
static HRESULT String_substr(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv,
                             jsval_t *r)
{
    int start=0, len, length;
    jsstr_t *str;
    double d;
    HRESULT hres;

    TRACE("\n");

    hres = get_string_val(ctx, jsthis, &str);
    if(FAILED(hres))
        return hres;

    length = jsstr_length(str);
    if(argc >= 1) {
        hres = to_integer(ctx, argv[0], &d);
        if(FAILED(hres)) {
            jsstr_release(str);
            return hres;
        }

        if(d >= 0)
            start = is_int32(d) ? min(length, d) : length;
    }

    if(argc >= 2) {
        hres = to_integer(ctx, argv[1], &d);
        if(FAILED(hres)) {
            jsstr_release(str);
            return hres;
        }

        if(d >= 0.0)
            len = is_int32(d) ? min(length-start, d) : length-start;
        else
            len = 0;
    } else {
        len = length-start;
    }

    hres = S_OK;
    if(r) {
        jsstr_t *ret = jsstr_substr(str, start, len);
        if(ret)
            *r = jsval_string(ret);
        else
            hres = E_OUTOFMEMORY;
    }

    jsstr_release(str);
    return hres;
}
Example #7
0
static HRESULT get_string_flat_val(script_ctx_t *ctx, vdisp_t *jsthis, jsstr_t **jsval, const WCHAR **val)
{
    HRESULT hres;

    hres = get_string_val(ctx, jsthis, jsval);
    if(FAILED(hres))
        return hres;

    *val = jsstr_flatten(*jsval);
    if(*val)
        return S_OK;

    jsstr_release(*jsval);
    return E_OUTOFMEMORY;
}
Example #8
0
static void update_content_length(char **ut_buf, u32 *pack_len)
{
	int  nlen;
	char olen[20];
	char *pcrlfcrlf;

	get_string_val(*ut_buf, (char*)"Content-Length: ", (char*)"\r\n", olen);

	pcrlfcrlf = strnstr(*ut_buf, "\r\n\r\n", *pack_len, true);
	if (pcrlfcrlf != NULL) {
		char len1[256];
		char len2[256];
		nlen = strlen(*ut_buf) - (pcrlfcrlf - *ut_buf) - 4;
		sprintf(len1, "Content-Length: %s\r\n", olen);
		sprintf(len2, "Content-Length: %d\r\n", nlen);
		strreplace(ut_buf, len1, len2, REPLACE_ALL, pack_len);
	}
}
Example #9
0
/* ECMA-262 3rd Edition    15.5.4.10 */
static HRESULT String_match(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv,
                            jsval_t *r)
{
    jsdisp_t *regexp = NULL;
    jsstr_t *str;
    HRESULT hres;

    TRACE("\n");

    if(!argc) {
        if(r)
            *r = jsval_null();
        return S_OK;
    }

    if(is_object_instance(argv[0])) {
        regexp = iface_to_jsdisp(get_object(argv[0]));
        if(regexp && !is_class(regexp, JSCLASS_REGEXP)) {
            jsdisp_release(regexp);
            regexp = NULL;
        }
    }

    if(!regexp) {
        jsstr_t *match_str;

        hres = to_string(ctx, argv[0], &match_str);
        if(FAILED(hres))
            return hres;

        hres = create_regexp(ctx, match_str, 0, &regexp);
        jsstr_release(match_str);
        if(FAILED(hres))
            return hres;
    }

    hres = get_string_val(ctx, jsthis, &str);
    if(SUCCEEDED(hres))
        hres = regexp_string_match(ctx, regexp, str, r);

    jsdisp_release(regexp);
    jsstr_release(str);
    return hres;
}
Example #10
0
/* ECMA-262 3rd Edition    15.5.4.5 */
static HRESULT String_charCodeAt(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv,
                                 jsval_t *r)
{
    jsstr_t *str;
    DWORD idx = 0;
    HRESULT hres;

    TRACE("\n");

    hres = get_string_val(ctx, jsthis, &str);
    if(FAILED(hres))
        return hres;

    if(argc > 0) {
        double d;

        hres = to_integer(ctx, argv[0], &d);
        if(FAILED(hres)) {
            jsstr_release(str);
            return hres;
        }

        if(!is_int32(d) || d < 0 || d >= jsstr_length(str)) {
            jsstr_release(str);
            if(r)
                *r = jsval_number(NAN);
            return S_OK;
        }

        idx = d;
    }

    if(r) {
        WCHAR c;
        jsstr_extract(str, idx, 1, &c);
        *r = jsval_number(c);
    }

    jsstr_release(str);
    return S_OK;
}
Example #11
0
static HRESULT do_attributeless_tag_format(script_ctx_t *ctx, vdisp_t *jsthis, jsval_t *r, const WCHAR *tagname)
{
    unsigned tagname_len;
    jsstr_t *str, *ret;
    WCHAR *ptr;
    HRESULT hres;

    hres = get_string_val(ctx, jsthis, &str);
    if(FAILED(hres))
        return hres;

    if(!r) {
        jsstr_release(str);
        return S_OK;
    }

    tagname_len = strlenW(tagname);

    ptr = jsstr_alloc_buf(jsstr_length(str) + 2*tagname_len + 5, &ret);
    if(!ret) {
        jsstr_release(str);
        return E_OUTOFMEMORY;
    }

    *ptr++ = '<';
    memcpy(ptr, tagname, tagname_len*sizeof(WCHAR));
    ptr += tagname_len;
    *ptr++ = '>';

    ptr += jsstr_flush(str, ptr);
    jsstr_release(str);

    *ptr++ = '<';
    *ptr++ = '/';
    memcpy(ptr, tagname, tagname_len*sizeof(WCHAR));
    ptr += tagname_len;
    *ptr = '>';

    *r = jsval_string(ret);
    return S_OK;
}
Example #12
0
/* ECMA-262 3rd Edition    15.5.4.5 */
static HRESULT String_charAt(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv,
                             jsval_t *r)
{
    jsstr_t *str, *ret;
    INT pos = 0;
    HRESULT hres;

    TRACE("\n");

    hres = get_string_val(ctx, jsthis, &str);
    if(FAILED(hres))
        return hres;

    if(argc) {
        double d;

        hres = to_integer(ctx, argv[0], &d);
        if(FAILED(hres)) {
            jsstr_release(str);
            return hres;
        }
        pos = is_int32(d) ? d : -1;
    }

    if(!r) {
        jsstr_release(str);
        return S_OK;
    }

    if(0 <= pos && pos < jsstr_length(str)) {
        ret = jsstr_substr(str, pos, 1);
        if(!ret)
            return E_OUTOFMEMORY;
    } else {
        ret = jsstr_empty();
    }

    *r = jsval_string(ret);
    return S_OK;
}
Example #13
0
int read_roi_infile(char *infile)
{
  FILE *fp = fopen(infile,"r");
  
  if (fp==NULL) {printf("ERROR: can't open %s ROI input file\n",infile); return(1); }
  
  char ctmp[256];
  int  itmp;
  double dtmp;
  int  i;
  						// DESCRIPTION							VALUE
  						// ----------------------------------------------------------	-----------------------------------------------
  get_string_val(fp,datfilename);		// First input data file					<infile>.dat				               
  get_string_val(fp,ctmp);			// Second input data file  				        /dev/null
  get_string_val(fp,ctmp);	        	// Output data file						<infile>.slc
  get_string_val(fp,ctmp);			// Output amplitudes file					/dev/null
  get_string_val(fp,ctmp);			// 8lk output file						8lk
  get_int_val(fp,&itmp);	 		// debug flag							0
  get_int_val(fp,&itmp);			// How many input bytes per line files 1 and 2		   	13680 13680
  get_int_val(fp,&itmp);			// How many good bytes per line, including header		13680 13680
  get_int_val(fp,&start_line); 	   		// First line to read  (start at 0)  				1
  get_int_val(fp,&npatches);			// Enter # of range input patches				{Get nl from hdr values; patches = nl/11600}
  get_int_val(fp,&itmp); 			// First sample pair to use (start at zero)			0
  get_int_val(fp,&itmp);			// Azimuth Patch Size (Power of 2)				16384
  get_int_val(fp,&patch_size);			// Number of valid points in azimuth				11600
  get_string_val(fp,ctmp);			// Deskew the image						n
  get_int_val(fp,&ncaltones);				

  printf("Reading %i caltone values\n",ncaltones);

  for (i=0;i<ncaltones;i++) 
      get_double_val(fp,&dtmp);			// Caltone % of sample rate					0.25 0.25701904296875
  get_2int_vals(fp,&itmp,&ns);			// Start range bin, number of range bins to process		1 6840
  get_int_val(fp,&itmp);			// Delta azimuth, range pixels for second file  		0 0
  get_3double_vals(fp,&dop1,&dop2,&dop3);	// Image 1 Doppler centroid quad coefs (Hz/prf) 		{calculated from dop_est - 3 parameters}
  get_double_val(fp,&dtmp);			// Image 2 Doppler centroid quad coefs (Hz/prf) 		{copy above 3 values}
  get_int_val(fp,&itmp);			// 1 = use file 1 doppler, 2 = file 2, 3 = avg  		1
  get_double_val(fp,&earth_rad);		// Earth Radius (m)						{calculated from get_peg_info}
  get_double_val(fp,&sc_vel);			// Body Fixed S/C velocities 1,2 (m/s)  			{calculate from EBEF state vector - 2 parameters}
  get_double_val(fp,&sc_height);		// Spacecraft height 1,2 (m)					{calculated from get_peg_info - 2 parameters}
  get_double_val(fp,&dtmp);			// Planet GM							0
  get_double_val(fp,&dtmp);			// Left, Right or Unknown Pointing				Right
  get_double_val(fp,&dtmp);			// SCH Velocity Vector 1					{calculated from get_peg_info - 3 parameters}
  get_double_val(fp,&dtmp);			// SCH Velocity Vector 2					{copy above 3 values}
  get_double_val(fp,&dtmp);			// SCH Acceleration Vector 1					{calculated from get_pef_info - 3 parameters}
  get_double_val(fp,&dtmp);			// SCH Acceleration Vector 2					{copy above 3 values}
  get_double_val(fp,&srf);			// Range of first sample in raw data file 1,2 (m)		{calculate from the hdr infomation - 2 values}
  get_double_val(fp,&prf);			// PRF 1,2 (pps)						{calculate from the hdr information - 2 values}
  get_double_val(fp,&dtmp);			// i/q means, i1,q1, i2,q2					15.5 15.5 15.5 15.5
  get_string_val(fp,ctmp);			// Flip i/q (y/n)						s
  get_double_val(fp,&dtmp);			// Desired azimuth resolution (m)				5  (what should this be???)
  get_double_val(fp,&dtmp);			// Number of azimuth looks					4  (what should this be???)
  get_double_val(fp,&fs);			// Range sampling rate (Hz)					22765000
  get_double_val(fp,&chirp_slope);		// Chirp Slope (Hz/s)						5.62130178e11
  get_double_val(fp,&pulse_duration);		// Pulse Duration (s)						33.8e-6
  get_int_val(fp,&itmp);			// Chirp extension points					0
  get_string_val(fp,ctmp);			// Secondary range migration correction (y/n)			n
  get_double_val(fp,&wavelength);		// Radar Wavelength (m) 					0.235
  get_int_val(fp,&itmp);			// Range Spectral Weighting (1.=none, 0.54=Hamming)		1.0
  get_double_val(fp,&dtmp);			// Fraction of range bandwidth to remove			0 0
  get_double_val(fp,&dtmp);			// linear resampling coefs:  sloper, intr, slopea, inta 	0 0 0 0
  get_double_val(fp,&dtmp);			// linear resampling deltas: dsloper, dintr, dslopea, dinta	0 0 0 0
  get_string_val(fp,ctmp);			// AGC file							/dev/null
  get_string_val(fp,dwpfilename);		// DWP file							/dev/null or DWP file

  printf("start_line %i\n",start_line);
  printf("npatches %i\n",npatches);
  printf("patch_size %i\n",patch_size);
  printf("num samples %i\n",ns);
 
  return(0);
}
Example #14
0
/* ECMA-262 3rd Edition    15.5.4.6 */
static HRESULT String_concat(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv,
                             jsval_t *r)
{
    jsstr_t *ret, *str;
    HRESULT hres;

    TRACE("\n");

    hres = get_string_val(ctx, jsthis, &str);
    if(FAILED(hres))
        return hres;

    switch(argc) {
    case 0:
        ret = str;
        break;
    case 1: {
        jsstr_t *arg_str;

        hres = to_string(ctx, argv[0], &arg_str);
        if(FAILED(hres)) {
            jsstr_release(str);
            return hres;
        }

        ret = jsstr_concat(str, arg_str);
        jsstr_release(str);
        if(!ret)
            return E_OUTOFMEMORY;
        break;
    }
    default: {
        const unsigned str_cnt = argc+1;
        unsigned len = 0, i;
        jsstr_t **strs;
        WCHAR *ptr;

        strs = heap_alloc_zero(str_cnt * sizeof(*strs));
        if(!strs) {
            jsstr_release(str);
            return E_OUTOFMEMORY;
        }

        strs[0] = str;
        for(i=0; i < argc; i++) {
            hres = to_string(ctx, argv[i], strs+i+1);
            if(FAILED(hres))
                break;
        }

        if(SUCCEEDED(hres)) {
            for(i=0; i < str_cnt; i++) {
                len += jsstr_length(strs[i]);
                if(len > JSSTR_MAX_LENGTH) {
                    hres = E_OUTOFMEMORY;
                    break;
                }
            }

            if(SUCCEEDED(hres)) {
                ptr = jsstr_alloc_buf(len, &ret);
                if(ptr) {
                    for(i=0; i < str_cnt; i++)
                        ptr += jsstr_flush(strs[i], ptr);
                } else {
                    hres = E_OUTOFMEMORY;
                }
            }
        }

        while(i--)
            jsstr_release(strs[i]);
        heap_free(strs);
        if(FAILED(hres))
            return hres;
    }
    }

    if(r)
        *r = jsval_string(ret);
    else
        jsstr_release(ret);
    return S_OK;
}
Example #15
0
/* ECMA-262 3rd Edition    15.5.4.13 */
static HRESULT String_slice(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv,
                            jsval_t *r)
{
    int start=0, end, length;
    jsstr_t *str;
    double d;
    HRESULT hres;

    TRACE("\n");

    hres = get_string_val(ctx, jsthis, &str);
    if(FAILED(hres))
        return hres;

    length = jsstr_length(str);
    if(argc) {
        hres = to_integer(ctx, argv[0], &d);
        if(FAILED(hres)) {
            jsstr_release(str);
            return hres;
        }

        if(is_int32(d)) {
            start = d;
            if(start < 0) {
                start = length + start;
                if(start < 0)
                    start = 0;
            } else if(start > length) {
                start = length;
            }
        } else if(d > 0) {
            start = length;
        }
    }

    if(argc >= 2) {
        hres = to_integer(ctx, argv[1], &d);
        if(FAILED(hres)) {
            jsstr_release(str);
            return hres;
        }

        if(is_int32(d)) {
            end = d;
            if(end < 0) {
                end = length + end;
                if(end < 0)
                    end = 0;
            } else if(end > length) {
                end = length;
            }
        } else {
            end = d < 0.0 ? 0 : length;
        }
    } else {
        end = length;
    }

    if(end < start)
        end = start;

    if(r) {
        jsstr_t *retstr = jsstr_substr(str, start, end-start);
        if(!retstr) {
            jsstr_release(str);
            return E_OUTOFMEMORY;
        }

        *r = jsval_string(retstr);
    }

    jsstr_release(str);
    return S_OK;
}